为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕的地10843 2021-11-19 17:10:51
$array_oneArray (    [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                )        )我只想将那些记录保留在第一个数组中的第二个数组中,并且我想取消设置第二个数组中的剩余记录如何仅保留与第一个数组中的键值匹配的第二个数组中的那些记录?
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

这是此答案中代码的循环版本:


$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 上的演示


查看完整回答
反对 回复 2021-11-19
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您可以使用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


查看完整回答
反对 回复 2021-11-19
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号