假设我有以下 PHP 多维数组,它被设计为递归:
$arr = array(
array(
'id' => 1,
'kids' => array(
array(
'id' => 11,
'kids' => array(
array(
'id' => 101,
'kids' => array(),
),
),
), // please note this is a sample
), // it could have any number of levels
),
);
给定 ID 值为 101,如何找出 ID 1 和 11 是多维数组中该元素的父元素?
最佳答案
我编写了一个可能对您有帮助的函数。
function get_parents($target, $array)
{
$parents_id = false;
foreach ($array as $item) {
if (empty($array))
return;
if ($item['id'] == $target)
return array();
else
$parents_id = get_parents($target, $item['kids']);
if (is_array($parents_id))
array_unshift($parents_id, $item['id']);
}
return $parents_id;
}
对于数组中的每个项目,如果它为空,则不返回任何内容。如果这是您要查找的项目,请返回一个空数组,我们将在其中添加父级的 id,否则继续深入查找。此时,如果$parents_id是一个数组,是因为你已经找到了你的目标key,所以将parents id添加到你的数组的开头
像这样调用这个函数:get_parents('101', $arr);
在您的示例中,结果将是:
Array
(
[0] => 1
[1] => 11
)
如果没有找到目标键,函数返回false
。
关于php - 如何递归获取多维数组中所有父元素的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26704931/