dstd2129 2018-02-04 19:15
浏览 34
已采纳

基于具有不同元素的其他数组过滤php数组

I have an array $items as such:

[0] => Array (
  [itemid] => 8
  [name] => A
  [rating] => 9.5
)
[1] => Array (
  [itemid] => 41
  [name] => B
  [rating] => 9.5
)

and another array $array as such:

[0] => Array (
  [itemid] => 458
  [name] => C
  [rating] => 9.603 
)
[1] => Array (
  [itemid] => 460
  [name] => D
  [rating] => 9.603
)
[2] => Array (
  [itemid] => 8
  [name] => A
  [rating] => 9.523
)
[3] => Array (
  [itemid] => 41
  [name] => B
  [rating] => 9.2
)

What I would like to do is return the array $array, but with all the elements from $items filtered out. In this case it would return $array, but without [2] and [3].

I've tried with array_diff(), but the rating can change from one array to the other, so the elements in the one array are not always the same as in the other array.

How do I go about this?

  • 写回答

2条回答 默认 最新

  • duankao4489 2018-02-04 19:37
    关注

    Is this what you're looking for?

    <?php
    
    $arr1 = [];
    $arr1[] = [ "itemid" => 8, "name" => "A", "rating" => 9.5 ];
    $arr1[] = [ "itemid" => 41, "name" => "B", "rating" => 9.5 ];
    
    $arr2 = [];
    $arr2[] = [ "itemid" => 458, "name" => "C", "rating" => 9.603 ];
    $arr2[] = [ "itemid" => 460, "name" => "D", "rating" => 9.603 ];
    $arr2[] = [ "itemid" => 8, "name" => "A", "rating" => 9.523 ];
    $arr2[] = [ "itemid" => 41, "name" => "B", "rating" => 9.2 ];
    
    
    function compare_by_itemid($a, $b) {
        return $a['itemid'] - $b['itemid'];
    }
    
    var_dump(array_udiff($arr2,$arr1,'compare_by_itemid'));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址