duanjing7298 2014-08-01 06:44
浏览 36
已采纳

阵列交集 - 仅一次

Newbie here, so I have a problem with the array_intersect function. I am comparing two arrays with intersection but I get some results twice. For example: 2 arrays

$array1 = array(apple, orange, orange, apricot, melon, watermelon);
$array2 = array(apple, orange);

$result = array_intersect($array1, $array2); This returns:

$result = array(apple, orange, orange);

But I want this:

$result = array(apple, orange);

I want this to return apple and orange ONCE each. Currently it returns apple, then orange, and then another orange. Am I missing something or am I simply using the wrong function.

edit: Based on the answers I have to clarify this. If the 2nd array is

$array1 = array(apple, orange, orange, apricot, melon, watermelon);
$array2 = array(apple, orange, orange);

I want the result to have 2 oranges, so array_unique wont do it.

$result = array(apple, orange, orange);
  • 写回答

5条回答 默认 最新

  • dongyu9850 2014-08-01 07:27
    关注

    Loop through first array. If second array has value put it to result and remove from second array.

    $array1 = array('apple', 'orange', 'orange', 'apricot', 'melon', 'watermelon');
    $array2 = array('apple', 'orange');
    $array3 = array('apple', 'orange', 'orange');
    
    function my_intersect($array1, $array2)
        {
        // array_walk($array1, 'sort');
        // array_walk($array2, 'sort');
        return array_filter($array1, function($item)use(&$array2)
            {
            if (($key = array_search($item, $array2)) !== false)
                {
                unset($array2[$key]);
                return true;
                }
            return false;
            });
        }
    
    var_dump(my_intersect($array1, $array2)); // 'apple', 'orange'
    var_dump(my_intersect($array1, $array3)); // 'apple', 'orange', 'orange'
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c