2010-11-16 98 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

相關問題