0

私は次のことを試しました:

$tree['uid1']['page'] = "page1";
$tree['uid1']['childs']['uid2']['page'] = "page2";
$tree['uid1']['childs']['uid3']['page'] = "page3";

array_walk_recursive($tree, function (&$item, $key) {
  echo $key.', ';
  if ($key == 'uid3') {
    // push array('childs' => array('uid4' => array('page' => 'page4')))
  }
});

ただし、$key をエコーし​​ます。最後のキー (「ページ」) のみを返します

4

1 に答える 1

2

ドキュメントの最初のコメントを見ると、期待どおりに機能しないことがわかります。

  • この関数はリーフ ノードのみにアクセスします *

つまり、サブ配列のサブ配列を持つ配列のツリーがある場合、ツリーのリーフにある単純な値のみがコールバック関数によってアクセスされます。コールバック関数は、サブノード (つまり、サブ配列) のツリー内のノードに対して呼び出されることはありません。これは、ほとんどの実際の状況でこの関数を使用できなくするという効果があります。

配列にキーが存在するかどうかを確認したい場合は、このソリューションをご覧ください。

于 2013-07-04T10:31:02.087 に答える