Как получить ключ родительского массива по значению ключа вложенного в него массива?
Имеется такая структура массива:
['title' => 'name1',
'id' => 1,
'children' =>
['title' => 'name2',
'id' => 2,
'children' =>
['title' => 'name3',
'id' => 3,
'children' => []
]
]
],
['title' => 'name4',
'id' => 4,
'children' =>
['title' => 'name5',
'id' => 5,
'children' => []
]
]
И, например, нужно по id = 3 получить ключ родительского массива (где id = 1)
Ответы (2 шт):
Автор решения: Bloom
→ Ссылка
<?php
$data=array (array('title' => 'name1',
'id' => '1', 'children' => array('title' => 'name2','id' =>'2',
'children' => array('title' => 'name3', 'id' =>'3', 'children' => array()))),
array('title' => 'name4',
'id' => 4,
'children' =>
array('title' => 'name5',
'id' => 5,
'children' => array()
)
));
$row=count($data);
for ($i=0; $i <$row ; $i++) {
if($data[$i]['children']['children']['id']=='3'){
echo 'Родительский ID= ';
print_r($data[$i]['id']);
}elseif($data[$i]['children']['id']=='3'){
echo 'Родительский ID= ';
print_r($data[$i]['id']);
}
}
?>
Автор решения: Denis640Kb
→ Ссылка
Можно сделать так:
<?php
$Arr = [['title' => 'name1',
'id' => 1,
'children' =>
['title' => 'name2',
'id' => 2,
'children' =>
['title' => 'name3',
'id' => 3,
'children' => []
]
]
],
['title' => 'name4',
'id' => 4,
'children' =>
['title' => 'name5',
'id' => 5,
'children' => []
]
],
['title' => 'name4',
'id' => 7,
'children' =>
['title' => 'name5',
'id' => 3,
'children' => []
]
],
['title' => 'name4',
'id' => 15,
'children' =>
['title' => 'name5',
'id' => 15,
'children' => []
]
]];
$res = array();
function getLastID ($arr, $needle, $key, $idd){
if($arr['children'] != null and $arr['id'] != $needle){
getLastID($arr['children'], $needle, $key, $idd);
} else {
$id = $arr['id'];
if ($id == $needle){
print_r("В массиве №".$key." Найден ключ ".$idd." значения ".$needle.'<br>');
} else {
print_r("В массиве №".$key." Ключ значения ".$needle." не найден<br>");
}
}
};
$search = "3"; // Здесь цифра, которую ищем.
foreach ($Arr as $key=>$value){
$valZ = print_r(getLastID($value, $search, $key, $value['id']));
}