PHPで配列の使い方について質問です。


$array[] = testFunc($test);

function testFunc($value){
if(!empty($value)){
$str = $value;
}
return $str;
}

簡素的ですが、このようなコードがあるとします。
$testが空の場合は、配列($array)に値が入って欲しくないのですが、空の値が入ってしまいます。

$testに値がない場合に配列に代入しないようにするには、どうすればいいのでしょうか?
以下の方法以外で教えて下さい。

if(!empty($test)){$array[] = testFunc($test);}

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/10/03 23:16:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント65pt

結果は配列で管理するということでよければ、下記のような実装方法でどうでしょうか。

<?php
  // 初期化
  $myArray = array();

  // データを追加
  $myArray = testFunc( $myArray, "apple");
  print_r( $myArray );

  // 空のデータ:追加されない
  $myArray = testFunc( $myArray, "" );
  print_r( $myArray );

  // データを追加
  $myArray = testFunc( $myArray, "banana");
  print_r( $myArray );

// データガからでなければ配列に追加
function testFunc($array, $value){
    if(!empty($value)){
        array_push( $array, $value );
    }
    return $array;
}
?>

結果は下記の通りです。

Array ( [0] => apple )

Array ( [0] => apple )

Array ( [0] => apple [1] => banana )

id:kt26

こちらの方法で行けました。勉強になります。ありがとうございました。

2007/10/03 23:15:54
id:GoldenDawn No.2

回答回数426ベストアンサー獲得回数81

ポイント5pt

こういう形にすればいいのでは。

function testFunc($value) {
  if (empty($value)) return null ;
  $str = $value;
  return $str;
}
id:kt26

上記の方法では、空の場合でも配列に値が入ります。

2007/10/03 23:16:09
  • id:Mook
    回答した後から思ったのですが、今回の場合は参照渡しにすると
    スマートかもしれません。

    // 渡す側
    testFuncByRef( $myArray, "apple");

    // 関数:参照渡しバージョン
    function testFuncByRef(&$array, $value){
      if(!empty($value)){
        array_push( $array, $value );
      }
    }

    第一引数の先頭にある「&」 がキーで、これにより渡された値そのものが変更されます。

    こちらで実行しても、実行結果は変わりません。
  • id:kt26
    コメントありがとうございます。こちらの方がシンプルですね。勉強させていただきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません