PHP array_udiff 数组函数
-
定义和用法
array_udiff - 用回调函数比较数据来计算数组的差集 -
版本支持
PHP4 PHP5 PHP7 不支持 支持 支持 -
语法
array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )
使用回调函数比较数据,计算数组的不同之处。和 array_diff() 不同的是,前者使用内置函数进行数据比较。 -
参数
参数 必需的 描述 array1 是 第一个数组。 array2 是 第二个数组。 ... 否 更多的数组列表。缺乏这一个参数,则这里识别为 value_compare_function 参数 value_compare_func 是 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。 callback ( mixed $a, mixed $b ) : int
-
返回值
返回 array1 里没有出现在其他参数里的所有值。 -
示例
尝试一下<?php // Arrays to compare $array1 = array(new stdclass, new stdclass, new stdclass, new stdclass, ); $array2 = array( new stdclass, new stdclass, ); // Set some properties for each object $array1[0]->width = 11; $array1[0]->height = 3; $array1[1]->width = 7; $array1[1]->height = 1; $array1[2]->width = 2; $array1[2]->height = 9; $array1[3]->width = 5; $array1[3]->height = 7; $array2[0]->width = 7; $array2[0]->height = 5; $array2[1]->width = 9; $array2[1]->height = 2; function compare_by_area($a, $b) { $areaA = $a->width * $a->height; $areaB = $b->width * $b->height; if ($areaA < $areaB) { return -1; } elseif ($areaA > $areaB) { return 1; } else { return 0; } } print_r(array_udiff($array1, $array2, 'compare_by_area')); ?>
-
相关函数
array_diff() - 计算数组的差集array_diff_assoc() - 带索引检查计算数组的差集array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集array_udiff_assoc() - 带索引检查计算数组的差集,用回调函数比较数据array_udiff_uassoc() - 带索引检查计算数组的差集,用回调函数比较数据和索引array_intersect() - 计算数组的交集array_intersect_assoc() - 带索引检查计算数组的交集array_uintersect() - 计算数组的交集,用回调函数比较数据array_uintersect_assoc() - 带索引检查计算数组的交集,用回调函数比较数据array_uintersect_uassoc() - 带索引检查计算数组的交集,用单独的回调函数比较数据和索引