我有一个又深又长的数组(矩阵)。我只知道产品 ID。 如何找到产品的途径?
采样数组(但正如我所说,它可以很长很深):
Array(
[apple] => Array(
[new] => Array(
[0] => Array([id] => 1)
[1] => Array([id] => 2))
[old] => Array(
[0] => Array([id] => 3)
[1] => Array([id] => 4))
)
)
我有 id:3,我希望得到这个: 苹果,老,0
谢谢
最佳答案
你可以用这个宝贝:
function getById($id,$array,&$keys){
foreach($array as $key => $value){
if(is_array( $value )){
$result = getById($id,$value,$keys);
if($result == true){
$keys[] = $key;
return true;
}
}
else if($key == 'id' && $value == $id){
$keys[] = $key; // Optional, adds id to the result array
return true;
}
}
return false;
}
// USAGE:
$result_array = array();
getById( 3, $products, $result_array);
// RESULT (= $result_array)
Array
(
[0] => id
[1] => 0
[2] => old
[3] => apple
)
函数本身将在成功时返回true
,在出错时返回false
,您想要的数据将存储在第三个参数中。
您可以使用array_reverse()
,link , 反转顺序和 array_pop()
, link , 删除最后一项 ('id')
关于php,长而深的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356699/