這是我剛剛寫只是爲了得到這個想法的例子。
注意這會在第一次出現匹配值時中斷執行。
codepad link
$arr = array(
array('a','b','c','d'),
array(61,62,63,64,65),
array('e','f','g','h'),
array(6,7,8,9),
array(1,2,array(1,2,3,4,5,6,7,8),4,5,6,7,8),
array('i','j','k','l','m'),
);
function array_walkup($desired_value, array $array, array $keys=array()) {
if (in_array($desired_value, $array)) {
array_push($keys, array_search($desired_value, $array));
return $keys;
}
foreach($array as $key => $value) {
if (is_array($value)) {
$k = $keys;
$k[] = $key;
if ($find = array_walkup($desired_value, $value, $k)) {
return $find;
}
}
}
return false;
}
$keys = array_walkup(3, $arr);
echo "3 has been found in \$arr[".implode('][', $keys)."]";
如果你只有一個「子」元素的引用,沒有辦法從中得到它的「父」元素除非直到達到孩子在整個結構遞歸迭代。也許你應該使用樹狀數據結構,比如PEAR中的[Tree](http://pear.php.net/package/Tree)? –
嗯。也許我應該確實:)讓我們看看社區中的其他人是否有任何補充。 – Stann