如何将特定的键值元素保留在数组中并删除其余元素?

$array_one


Array (

    [2018] => Array ()


    [2019] => Array

        (

            [5] => 2966

        )


    [2020] => Array

        (

            [0] => 2930

            [1] => 2919

        )

)

第二个数组是:


$成本


Array

(

    [2018] => Array

        (

            [2789] => Array

                (

                    [jh] => 0

                    [presta] => 0

                    [log] => 0

                )


            [2874] => Array

                (

                    [jh] => 0.5

                    [presta] => 1

                    [log] => 0

                )


            [3786] => Array

                (

                    [jh] => 7

                    [presta] => 0

                    [log] => 0

                )


            [315] => Array

                (

                    [jh] => 0

                    [presta] => 0

                    [log] => 0

                )


            [325] => Array

                (

                    [jh] => 0

                    [presta] => 0

                    [log] => 0

                )


            [3793] => Array

                (

                    [jh] => 0.5

                    [presta] => 1.2

                    [log] => 0

                )


            [3796] => Array

                (

                    [jh] => 22

                    [presta] => 27.4

                    [log] => 0

                )


            [3798] => Array

                (

                    [jh] => 0

                    [presta] => 0

                    [log] => 0

                )


            [3800] => Array

                (

                    [jh] => 17

                    [presta] => 0

                    [log] => 0

                )


            [3832] => Array

                (

                    [jh] => 2

                    [presta] => 9

                    [log] => 0

                )


        )


我只想将那些记录保留在第一个数组中的第二个数组中,并且我想取消设置第二个数组中的剩余记录


如何仅保留与第一个数组中的键值匹配的第二个数组中的那些记录?


慕的地10843
浏览 168回答 2
2回答

跃然一笑

这是此答案中代码的循环版本:$output = array();foreach ($array_one as $key => $keys) {    if (count($keys))        $output[$key] = array_intersect_key($costs[$key], array_flip($keys));}print_r($output);输出:Array(    [2019] => Array        (            [2966] => Array                (                    [jh] => 0                    [presta] => 0                    [log] => 0                )        )    [2020] => Array        (            [2930] => Array                (                    [jh] => 0                    [presta] => 0                    [log] => 0                )                [2919] => Array                (                    [jh] => 0                    [presta] => 0                    [log] => 0                )            )    )3v4l.org 上的演示

摇曳的蔷薇

您可以使用array_intersect_key,foreach($costs as $k => &$val) // & to save value to value itself{    if(!empty($array_one[$k])){        $val = array_intersect_key($val, $array_one[$k]);    }}这将减少迭代次数,$result=[];foreach ($array_one as $k => $val) {    if (!empty($val))        $result[$k] = array_intersect_key($costs[$k], array_flip($val));}print_r($result);最终,它只会保留那些匹配的索引数据 array_one
打开App,查看更多内容
随时随地看视频慕课网APP