2010-11-16 103 views
0

比方说,你有一个这样的数组:是否有可能使用array_walk_recursive跟踪数组中的位置?

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 
        ) 
) 

如果你申请某事像这样给你“wantedkey”的所有实例的数组:

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

array_walk_recursive($myarray, 'test_print'); 

但array_walk_recursive没有按”告诉我(afaik)我在数组中的位置....是否有任何方法跟踪array_walk_recursive中上面示例中找到'wantedkey'的位置?

任何提示高度赞赏,先谢谢了! :-) 我知道这已被问过,但我想知道是否有人已经找到一个解决方案了......

+0

所以你想知道“一” =>“wantedkey” => 5?或'one'=> 0 => 5,0 => 0 => 5我不能说是否是以前的索引或'如果它是数字'的索引,你感兴趣的 – 2010-11-16 21:09:03

+0

作为悬崖说我需要跟踪元素位置以及层次结构,我想这是不可能的array_walk_rekursive – tgb 2010-11-17 08:04:41

回答

0

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

+0

这似乎在技​​术上讲,但实际上我正在寻找输出,告诉我在一,二和三中找到'wantedkey'的位置,以便我可以在具体位置访问其他值,例如otherkey2 =>三分。 – tgb 2010-11-16 19:41:24

0

好了,正按预期RecursiveArrayIterator正是:-) 工作示例可以在这里找到: link Tree recursion

相关问题