поиск значения ключа в многомерном массиве в php - PullRequest
0 голосов
/ 15 июня 2019

Я полностью сбит с толку с многомерными массивами в 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
                    )
            )

    )
)

1 Ответ

0 голосов
/ 15 июня 2019
<?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);
?>
...