• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • array_diff_uassoc()

    (PHP 5, PHP 7)

    用用户提供的回调函数做索引检查来计算数组的差集

    说明

    array_diff_uassoc(array $array1, array $array2[,array $...],callable$key_compare_func) : array

    对比了$array1$array2并返回不同之处。注意和 array_diff()不同的是键名也用于比较。

    和 array_diff_assoc()不同的是使用了用户自定义的回调函数,而不是内置的函数。

    参数

    $array1

    待比较的数组

    $array2

    和这个数组进行比较

    更多比较的数组

    $key_compare_func

    在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。

    callback (mixed $a,mixed $b) : int

    返回值

    返回一个 array,该数组包括了所有在$array1中但是不在任何其它参数数组中的值。

    范例

    Example #1array_diff_uassoc()例子

    上面的例子中"a"=>"green"出现在两个数组中因此不在函数的输出中。但是0 =>"red"却在输出中,因为第二个参数中的"red"的键名是1

    <?php
    function key_compare_func($a, $b)
    {
        if ($a === $b) {
            return 0;
        }
        return ($a > $b)? 1:-1;
    }
    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    $result = array_diff_uassoc($array1, $array2, "key_compare_func");
    print_r($result);
    ?>
    

    以上例程会输出:

    Array
    (
        [b] => brown
        [c] => blue
        [0] => red
    )
    

    The equality of 2 indices is checked by the user supplied callback function.

    注释

    Note:

    注意本函数只检查了多维数组中的一维。当然可以用array_diff_uassoc($array1[0],$array2[0],"key_compare_func");检查更深的维度。

    参见

    //array_diff_uassoc for multidimenssional array
    $color_1=array('a'=>'white','b'=>'red','c'=>array('a'=>'green','b'=>'blue','c'=>'yellow'));
    $color_2=array('a'=>'white','b'=>'red','c'=>array('a'=>'white','b'=>'red','c'=>'yellow'));
    function key_compare($a,$b){
      if($a===$b)    return 0;
      return($a>$b)?1:-1;
    }
    print_r(array_diff_uassoc($color_1['c'], $color_2['c'],"key_compare"));
    //Output
     Array
    (
      [a] => green
      [b] => blue
    )

    上篇:usort()