Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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_For Loop_Multidimensional Array_Foreach - Fatal编程技术网

在php中搜索多维数组中的键值

在php中搜索多维数组中的键值,php,arrays,for-loop,multidimensional-array,foreach,Php,Arrays,For Loop,Multidimensional Array,Foreach,我完全被php中的多维数组搞糊涂了。我有一个非常大的数组,我试图在其中进行一些搜索。也就是说,如果颜色为绿色,则检查年龄,结果数组应包含4个最高年龄值(颜色为绿色),并且所有其他子数组应不受影响。请帮忙 Array ( [0] => Array ( [name] => arr1 [data] => Array ( [0] => Array

我完全被php中的多维数组搞糊涂了。我有一个非常大的数组,我试图在其中进行一些搜索。也就是说,如果颜色为绿色,则检查年龄,结果数组应包含4个最高年龄值(颜色为绿色),并且所有其他子数组应不受影响。请帮忙

Array
(
   [0] => Array
     (
        [name] => arr1
        [data] => Array
            (
                [0] => Array
                    (
                        [name] => A
                        [age] => 5
                        [color] => green

                    )

                [1] => Array
                    (
                        [name] => B
                        [age] => 4
                        [color] => green
                    )

                [2] => Array
                    (
                        [name] => C
                        [age] => 10
                        [color] => Red
                    )

                [3] => Array
                    (
                        [name] =>  F
                        [age] => 1
                        [color] => green
                    )

            )

    )

[1] => Array
    (
        [name] => arr2
        [data] => Array
            (
                [0] => Array
                    (
                        [name] => cc
                        [age] => 8
                        [color] => yellow
                    )

                [1] => Array
                    (
                        [name] => Y
                        [age] => 20
                        [color] => green
                    )
                [2] => Array
                    (
                        [name] => Y
                        [age] => 9
                        [color] => green
                    )
            )

    )
 )
预期的结果数组为

Array
(
[0] => Array
    (
        [name] => arr1
        [data] => Array
            (
                [0] => Array
                    (
                        [name] => A
                        [age] => 5
                        [color] => green

                    )

                [1] => Array
                    (
                        [name] => B
                        [age] => 4
                        [color] => green
                    )

                [2] => Array
                    (
                        [name] => C
                        [age] => 10
                        [color] => Red
                    )

            )

    )

[1] => Array
    (
        [name] => arr2
        [data] => Array
            (
                [0] => Array
                    (
                        [name] => cc
                        [age] => 8
                        [color] => yellow
                    )

                [1] => Array
                    (
                        [name] => Y
                        [age] => 20
                        [color] => green
                    )
                [2] => Array
                    (
                        [name] => Y
                        [age] => 9
                        [color] => green
                    )
            )

    )
)


对于新数组应该包含最高年龄值(颜色为绿色)以及主数组中的所有其他子数组的问题,我完全感到困惑。您的reultant数组令人困惑,我们可以知道您到底需要什么吗?在这种情况下,请详细告诉我们需要什么。在整个阵列中,检查颜色是否为绿色。如果我们得到的绿色超过5,请检查其年龄。生成的数组应该只包含4个对应的年龄最大的绿色值。在这个例子中,我有5个绿色的值。然后我检查了年龄,只显示了最大的4个年龄。你想要结果数组中最高的绿色值吗?
<?php
// Your code here!

$ar[0] = array('name' => 'arr1',
        'data' => array
            (
                '0' => array
                    (
                        'name' => 'A',
                        'age' => 5,
                        'color' => 'green'

                    ),

                '1' => array
                    (
                        'name' => 'B',
                        'age' => 4,
                        'color' => 'green'
                    ),

                '2' => array
                    (
                        'name' => 'C',
                        'age' => 10,
                        'color' => 'Red'
                    ),

                '3' => array
                    (
                        'name' =>  'F',
                        'age' => 1,
                        'color' => 'green'
                    )

            )

    );

$ar[1] = array
    (
        'name' => 'arr2',
        'data' => array
            (
                '0' => array
                    (
                        'name' => 'cc',
                        'age' => 8,
                        'color' => 'yellow'
                    ),

                '1' => array
                    (
                        'name' => 'Y',
                        'age' => 20,
                        'color' => 'green'
                    ),
                '2' => array
                    (
                        'name' => 'Y',
                        'age' => 9,
                        'color' => 'green'
                    )
            )

    );

 $green = array();
 foreach($ar as $k1=>$a1){
     foreach($a1['data'] as $k2=>$a2){
        if($a2['color']=='green') {
            array_push($green,$a2['age']);
        }
    }
 }
 rsort($green);
 $green = array_splice($green,0,4);


 foreach($ar as $k1=>$a1){
     foreach($a1['data'] as $k2=>$a2){
        if($a2['color']=='green') {
            if(!in_array($a2['age'], $green)){
                unset($ar[$k1]['data'][$k2]);
            }
        }
    }
 }
 print_r($ar);
?>