是否可以使用array_walk_recursive跟踪我在数组中的位置?

时间:2010-11-16 19:21:49

标签: php recursion multidimensional-array

假设您有一个这样的数组:

array
(
    ['one'] => array (
                      ['wantedkey'] => 5
                      ['otherkey1'] => 6
                      ['otherkey2'] => 7
                     )
    ['two'] =>  => array (
                      ['otherkey1'] => 5
                      ['otherkey2'] => 6
                      ['wantedkey'] => 7
                     )
    ['three'] =>  => array (
                      ['otherkey1'] => 5
                      ['wantedkey'] => 6
                      ['otherkey2'] => 7
                     )
)

如果你将这样的东西应用到数组中,你会获得'wantkey'的所有实例:

function test_print($item, $key) {
  if ($key === 'wantedkey') {
    print $item;
  }
}

array_walk_recursive($myarray, 'test_print');

但是array_walk_recursive没有告诉我(afaik)我在数组中的位置....有没有办法跟踪在上面的例子中使用array_walk_recursive找到'wantkey'的位置?

任何提示都非常感谢,提前感谢! :-) 我知道之前有人问过,但我想知道是否有人找到了解决方案......

3 个答案:

答案 0 :(得分:1)

如果您需要跟踪元素位置和层次结构,请使用RecursiveArrayIterator

答案 1 :(得分:0)

凭借递归定义,您可以在任何给定时间确切地知道您在数组中的位置。由于您必须在每次连续调用时提供越来越小的数组,因此您可以根据数组的大小确切地看到您所在的位置。

答案 2 :(得分:0)

好的,RecursiveArrayIterator正如预期的那样工作:-) 可以在这里找到一个工作示例: link Tree recursion