1
array(2) {
  [0]=>
  array(4) {
    ["id"]=>
    string(1) "1"
    ["name"]=>
    string(3) "Lim"
    ["subproject_id"]=>
    string(1) "5"
    ["subproject_name"]=>
    string(4) "Mads"
  }
  [1]=>
  array(1) {
    [0]=>
    array(4) {
      ["id"]=>
      string(1) "1"
      ["name"]=>
      string(3) "Lim"
      ["subproject_id"]=>
      string(1) "4"
      ["subproject_name"]=>
      string(5) "KANYE"
    }
  }
}

nameとをそれぞれ出力するにはどうすればよいsubproject_nameですか?

シンプルforeach()は最初のものだけを取得します。

4

3 に答える 3

1

これを試して:

array_walk_recursive($array, function($item, $key) {
    if (in_array($key, array('name', 'subproject_name'))) {
        echo $item;
    }
});

http://php.net/manual/en/function.array-walk-recursive.phpを参照してください。

注: PHP 5.3.0 ではcallbackを使用できます。以前のバージョンでは、非匿名関数が必要です。

于 2012-06-26T14:19:27.763 に答える
1

その配列がどの程度変化するかはわかりませんが、簡単な解決策が 1 つあります。

foreach($array as $key => $value){

    if(!isset($value['id']))
        $value = $value[0];


    echo $value['name'];
    echo $value['subproject_name'];
}

より深くなる場合は、「if」の代わりに「while」を使用できます。

于 2012-06-26T14:11:02.430 に答える
0

PHP のドキュメントを参照して、「array_walk」と「array_walk_recursive」を探してください。

于 2012-06-26T14:08:39.243 に答える