假设我有以下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是多维数组中该元素的父元素?
答案 0 :(得分:2)
我写了一个可能对你有用的功能。
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是一个数组,是因为你找到了你的目标键,所以将父ID输入到数组的开头
像这样调用此函数:get_parents('101', $arr);
在您的示例中,结果将是:
Array
(
[0] => 1
[1] => 11
)
如果未找到目标键,则该函数返回false
。
答案 1 :(得分:0)
这个程序只在第一个数组中工作 而不是这个
$ arr = array( 阵列( 'id'=> 1,//启动root 'parent'=>阵列( 阵列( 'id'=> 2, 'parent'=>阵列( 阵列( 'id'=> 3, 'parent'=> array(array('id'=> 4,'parent'=> array()),array('id'=> 5,'parent'=> array())), ),
array(
'id' => 6,
'parent' => array(array('id' => 7,'parent' => array()),array('id' => 8,'parent' => array())),
),
),
),
array(
'id' => 9,
'parent' => array(
array(
'id' => 10,
'parent' => array(array('id' => 11,'parent' => array()),array('id' => 12,'parent' => array())),
),
array(
'id' => 13,
'parent' => array(array('id' => 14,'parent' => array()),array('id' => 15,'parent' => array())),
),
),
),
), //end root
),
);