【问题标题】:searching a key value in multidimensional array in php在php中搜索多维数组中的键值
【发布时间】:2019-10-29 15:37:33
【问题描述】:

我完全对 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
                    )
            )

    )
)

【问题讨论】:

  • 我对这个问题完全感到困惑
  • 新数组应包含颜色为绿色的年龄最大值以及主数组内的所有其他子数组。
  • 你的结果令人困惑,我们能知道你到底需要什么吗?详细告诉我们需求
  • 在这种情况下,在整个数组中检查颜色是否为绿色假设如果我们得到的绿色大于 5,则检查它的年龄。并且结果数组应该只包含 4 个对应的年龄最高的绿色值。在示例中,我有 5 个绿色值。然后我检查了年龄,只显示了最大的 4 个年龄。
  • 您想要结果数组中的最高绿色值吗?

标签: php arrays for-loop multidimensional-array foreach


【解决方案1】:
<?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);
?>

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 2016-12-12
    • 2011-05-20
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多