猿问

如何在具有特定值的多维数组中查找值?

我有一个看起来像这样的数组:


Array

(

    [2019] => Array

        (

            [2019] => Array

                (

                    [year] => 2019

                    [amount] => 3269.93

                    [type] => charge

                )


        )


    [2018] => Array

        (

            [2018] => Array

                (

                    [year] => 2018

                    [amount] => 219.25

                    [type] => payout

                )


        )


    [2017] => Array

        (

            [2017] => Array

                (

                    [year] => 2017

                    [amount] => 214.06

                    [type] => charge

                )


        )


)

我尝试使用array_search()但我认为它无法完成我想要的。


根据手册,array_search()用于搜索数组中的特定值,如果找到该值,则返回其对应的键。这考虑到我们知道我们要查找的值是什么并且我们想要返回密钥。我想反过来做。我知道密钥但我不知道值,我想返回值而不是密钥。


我正在尝试"select amount where year='2017'"使用数组执行类似于 MYSQL的操作。


我怎样才能做到这一点?任何的想法?


跃然一笑
浏览 223回答 2
2回答

慕容3067478

您可以使用 array_filterarray_filter($array,function ($v){    return current($v)["amount"] == 3269.93;});

翻过高山走不出你

我使用嵌套的 foreach 解决了我的问题。我确信有更聪明的方法来实现最终结果,但对我有用。大批$data_array='Array(&nbsp; &nbsp; [2019] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2019] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [year] => 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 3269.93&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [type] => charge&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [2018] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2018] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [year] => 2018&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 219.25&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [type] => payout&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [2017] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2017] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [year] => 2017&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [amount] => 214.06&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [type] => charge&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; ))';每个人的最终结果&nbsp; &nbsp; foreach ($data_array as $key => $data_value) {&nbsp;&nbsp; &nbsp; foreach ($data_value as $key => $value) {&nbsp;&nbsp; &nbsp; $sales_year = $value['year'];&nbsp; &nbsp; $current_period = date('Y');&nbsp; &nbsp; if($sales_year !=$current_period){&nbsp; &nbsp; &nbsp;$current_sales_year = $sales_year+1;&nbsp; &nbsp; echo 'Previous Year : '.$sales_year&nbsp; &nbsp; echo&nbsp; '<br>';&nbsp; &nbsp; echo 'Previous Sales : $'.$value['amount'];&nbsp; &nbsp; echo&nbsp; '<br>';&nbsp; &nbsp; echo 'Current Year : '.$current_sales_year&nbsp; &nbsp; echo&nbsp; '<br>';//THIS FINDS THE AMOUNT(VALUE) OF THE KNOWN YEAR(KEY)&nbsp; &nbsp; echo 'Current Sales : $'$data_array[$current_sales_year][$current_sales_year]['amount'];&nbsp; &nbsp; echo&nbsp; '<br>';&nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; }
随时随地看视频慕课网APP
我要回答