搜索

首页  >  问答  >  正文

php数组对比unset问题

根据数组二 含有的值 5 4 1 把上面的数组一不存在 key 不是 5 4 1的unset 求最简单写法。哈

// 数组一
array(6) {
  [1] => string(12) "伊凡木门"
  [2] => string(12) "梦天木门"
  [3] => string(15) "大自然地板"
  [4] => string(12) "尚品宅配"
  [5] => string(15) "德国都芳漆"
  [6] => string(12) "左右沙发"
}
数组二
array(3) {
  [0] => int(5)
  [1] => int(4)
  [2] => int(1)
}
三叔三叔2701 天前962

全部回复(8)我来回复

  • 高洛峰

    高洛峰2017-06-29 10:10:35

    我最后用下面的方法解决。如果大神们有更好的写法请不吝赐教

        function get_vip_brand_list($uid = UID)
        {
            // 第一个数组
            $brand_list = config('sales_brand');
            // 第二个数组,反转键和值
            $node       = array_flip(get_auth_node($uid,'sales.brand'));
            // 比较两个数组的键名,并返回交集
            $vip_node   = array_intersect_key($brand_list, $node);
            return $vip_node;
        }
    

    回复
    0
  • PHP中文网

    PHP中文网2017-06-29 10:10:35

    可以利用array_diff系列的函数来操作,具体业务具体使用array_diff_key或者assoc自己决定就可以了。

    回复
    0
  • 世界只因有你

    世界只因有你2017-06-29 10:10:35

    根据数组二 含有的值 5 4 1 把上面的数组一不存在 key 不是 5 4 1的unset 求最简单写法。哈
    表示看不懂

    <?php
    $keys1 = array_keys($array1); // 获取数组1key列表
    $diffKeys = array_diff($keys1,$array2);// 结算数组1和数组2 key差集
    foreach($diffKeys as $key){
        unset($array1[$key]);
    }

    回复
    0
  • typecho

    typecho2017-06-29 10:10:35

    创建一个新的数组用来存放你要保留的值。然后循环遍历数组二,再用array_push函数把数组一中要保留的值push到新建的数组中。

    回复
    0
  • 大家讲道理

    大家讲道理2017-06-29 10:10:35

    雷雷

    回复
    0
  • 某草草

    某草草2017-06-29 10:10:35

    先翻转数组2,再求交集,你的解法我看是正解

    回复
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-29 10:10:35

    雷雷

    回复
    0
  • 学习ing

    学习ing2017-06-29 10:10:35

    可以了解下array_slice 这个函数

    回复
    0
  • 取消回复