Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在多维数组中查找密钥?_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 如何在多维数组中查找密钥?

Php 如何在多维数组中查找密钥?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,需要创建一个searchCategory$categories$id函数,它必须返回一个'title'属性值 它尝试了这段代码,但只适用于一层多维数组 多维数组: $categories = array( array( "id" => 1, "title" => "Обувь", 'children' => array( array( 'id' => 2, '

我有一个多维数组,需要创建一个searchCategory$categories$id函数,它必须返回一个'title'属性值

它尝试了这段代码,但只适用于一层多维数组

多维数组:

$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);
    } 
}