Php 如何在多维数组中查找密钥?
我有一个多维数组,需要创建一个searchCategory$categories$id函数,它必须返回一个'title'属性值 它尝试了这段代码,但只适用于一层多维数组 多维数组:Php 如何在多维数组中查找密钥?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,需要创建一个searchCategory$categories$id函数,它必须返回一个'title'属性值 它尝试了这段代码,但只适用于一层多维数组 多维数组: $categories = array( array( "id" => 1, "title" => "Обувь", 'children' => array( array( 'id' => 2, '
$categories = array( array(
"id" => 1,
"title" => "Обувь",
'children' => array(
array(
'id' => 2,
'title' => 'Ботинки',
'children' => array(
array('id' => 3, 'title' => 'Кожа'),
array('id' => 4, 'title' => 'Текстиль'),
),
),
array('id' => 5, 'title' => 'Кроссовки',),
)), array(
"id" => 6,
"title" => "Спорт",
'children' => array(
array(
'id' => 7,
'title' => 'Мячи'
)
) ), );
我尝试解决问题的代码:
function searchCategory($categories, $id) {
foreach($categories as $category) {
if($category['id'] == $id) {
echo $category['title'] . '<br>';
}
}
};
我需要我的函数在所有数组中查找id值,并在找到数组的情况下返回标题
function searchCategory($categories, $id)
{
$arrayiter = new RecursiveArrayIterator($categories);
$iteriter = new RecursiveIteratorIterator($arrayiter);
foreach ($iteriter as $key => $value) {
// checking if iterator comes to point where key is id and value matched
if ($key == 'id' && $value == $id) {
// returning matched value with current iterator instance
return $iteriter->getInnerIterator()['title'];
}
}
return '';
}
echo searchCategory($categories, 2).'<br/>';
echo searchCategory($categories, 7);
-此迭代器允许以与相同的方式在数组和对象上迭代时取消设置和修改值和键。此外,还可以对当前迭代器项进行迭代。
-可以用于通过递归迭代器进行迭代。
:获取内部迭代器您需要递归地生成函数 演示:
您缺少另一个foreach循环来迭代内部数组中的元素。尝试这样做:foreach$类别为$key=>$value{echo$key:$value}
function searchCategory($categories, $id) {
foreach($categories as $category) {
if($category['id'] == $id)
echo $category['title'] . '<br>';
if(isset($category['children']))
searchCategory($category['children'],$id);
}
}