array_udiff 用法

Jackey PHP 2,922 次浏览 , 没有评论

array_udiff — 用回调函数比较数据来计算数组的差集

  1. array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

使用回调函数比较数据,计算数组的不同之处。

我们在callback里 需要实现的是 回调函数的第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返 回一个小于,等于或大于 0 的整数。

  1. //$arr1 = array('m1'=>1, 'm2'=>5, 'm3'=>3);
  2. //$arr2 = array('n1'=>4, 'n2'=>5, 'n3'=>6);
  3. $arr1 = [
  4. [
  5. 'id'=>1
  6. ],
  7. [
  8. 'id'=>2
  9. ],
  10. [
  11. 'id'=>3
  12. ],
  13. [
  14. 'id'=>4
  15. ],
  16. [
  17. 'id' => 40
  18. ]
  19. ];
  20. $arr2 = [
  21. [
  22. 'id'=>4,
  23. 'name'=>'11'
  24. ],
  25. [
  26. 'id'=>10,
  27. 'name'=>'1100'
  28. ]
  29. ];
  30.  
  31. $new_arr = array_udiff($arr1, $arr2, function($a, $b){
  32. if($a['id'] > $b['id']){
  33. return 1;
  34. } else if($a['id'] == $b['id']) {
  35. return 0;
  36. } else if($a['id'] < $b['id']) {
  37. return -1;
  38. }
  39. });
  40. print_r($new_arr);

回调函数只要实现如何判断传进来的两个值是相等还是大于小于的关系即可。这两个值都是数组的元素。但是不要误 会 第一个参数是第一个数组的值,第二个参数是第二个数组的值。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go