繁体   English   中英

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

[英]searching a key value in multidimensional array in php

与 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
                    )
            )

    )
)
<?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);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM