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 21:19:07
  • 終了:2007/10/03 23:16:45

回答(2件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/10/03 21:47:06

ポイント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

GoldenDawn回答回数426ベストアンサー獲得回数812007/10/03 22:14:19

ポイント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
    コメントありがとうございます。こちらの方がシンプルですね。勉強させていただきます。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません