array_udiff_assoc和array_diff_uassoc之间的区别是什么?

php*_*han 3 php arrays

array_udiff_assoc和array_diff_uassoc之间的区别是什么?

对于array_udiff_assoc,我得到了这个东西

<?php
 function myfunction($v1,$v2)
 {
 if ($v1===$v2)
   {
   return 0;
   }
 return 1;
 }
 $a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
 $a2=array("a"=>"Cat","b"=>"Horse","c"=>"Dog");
 print_r(array_udiff_assoc($a1,$a2,"myfunction"));
 ?>
Run Code Online (Sandbox Code Playgroud)

结果

Array ( [b] Dog [c] => Horse )
Run Code Online (Sandbox Code Playgroud)

还有array_diff_uassoc

  <?php
     function myfunction($v1,$v2)
     {
     if ($v1===$v2)
       {
       return 0;
       }
     return 1;
     }
     $a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
     $a2=array("a"=>"Cat","b"=>"Horse","c"=>"Dog");
     print_r(array_diff_uassoc($a1,$a2,"myfunction"));
     ?>
Run Code Online (Sandbox Code Playgroud)

结果与第一个相同

Array ( [b] Dog [c] => Horse )
Run Code Online (Sandbox Code Playgroud)

是否有任何区别,如果有的话.Php手册没有像他们常说的那样说它们是别名.

Nan*_*nne 5

它们都是相同的,但udiff-assoc将DATA与用户提供的功能diff-uassoc进行比较,同时将INDEX与用户提供的功能进行比较.

作为@lonsesomeday的答案:如'u'所示,diff_assoc将使用内部函数进行所有比较,并udiff_uassoc使用提供的回调进行索引和数据比较.

http://www.php.net/manual/en/function.array-diff-uassoc.php

http://www.php.net/manual/en/function.array-udiff-assoc.php


mic*_*usa 5

也许一系列测试用例将消除这些相关本机函数之间的任何混淆。我将始终使用本机不区分大小写的比较函数strcasecmp()来简化演示/解释。

以下是每个函数的行为方式的简单英语解释:

  1. array_diff()- 区分大小写,仅比较值
  2. array_diff_key()- 区分大小写的仅键比较
  3. array_diff_ukey()- 不区分大小写,仅进行键比较
  4. array_diff_assoc()- 区分大小写的键和区分大小写的值比较
  5. array_diff_uassoc()- *首次出现的不区分大小写的键和区分大小写的值比较
  6. array_udiff()- 不区分大小写,仅比较值
  7. array_udiff_assoc()- 区分大小写的键和不区分大小写的值比较
  8. array_udiff_uassoc()- 不区分大小写的键和不区分大小写的值比较

*请密切注意 5.由于数组中限定出现的顺序,在和比较方面array_diff_uassoc()的行为有何不同。['c' => 'd']['m' => 'n']$second

代码:(演示

$first = [
    'A' => 'B',
    'c' => 'd',
    'E' => 'f',
    'g' => 'I',
    'k' => 'F',
    'm' => 'n',
    'o' => 'p',
];

$second = [
    'a' => 'b',
    'A' => 'b',
    'C' => 'd',
    'c' => 'D',
    'e' => 'F',
    'G' => 'H',
    'i' => 'B',
    'J' => 'D',
    'm' => 'N',
    'M' => 'n',
    'O' => 'r',
];

echo "array_diff()\n";
var_export(array_diff($first, $second));
echo "\n---\narray_diff_key()\n";
var_export(array_diff_key($first, $second));
echo "\n---\narray_diff_ukey()\n";
var_export(array_diff_ukey($first, $second, 'strcasecmp'));
echo "\n---\narray_diff_assoc()\n";
var_export(array_diff_assoc($first, $second));
echo "\n---\narray_diff_uassoc()\n";
var_export(array_diff_uassoc($first, $second, 'strcasecmp'));
echo "\n---\narray_udiff()\n";
var_export(array_udiff($first, $second, 'strcasecmp'));
echo "\n---\narray_udiff_assoc()\n";
var_export(array_udiff_assoc($first, $second, 'strcasecmp'));
echo "\n---\narray_udiff_uassoc()\n";
var_export(array_udiff_uassoc($first, $second, 'strcasecmp', 'strcasecmp'));
Run Code Online (Sandbox Code Playgroud)

输出:

array_diff()
array (
  'E' => 'f',
  'G' => 'I',
  'o' => 'p',
)
---
array_diff_key()
array (
  'E' => 'f',
  'k' => 'F',
  'o' => 'p',
)
---
array_diff_ukey()
array (
  'k' => 'F',
)
---
array_diff_assoc()
array (
  'A' => 'B',
  'c' => 'd',
  'E' => 'f',
  'G' => 'I',
  'k' => 'F',
  'm' => 'n',
  'o' => 'p',
)
---
array_diff_uassoc()
array (
  'A' => 'B',
  'E' => 'f',
  'G' => 'I',
  'k' => 'F',
  'm' => 'n',
  'o' => 'p',
)
---
array_udiff()
array (
  'G' => 'I',
  'o' => 'p',
)
---
array_udiff_assoc()
array (
  'E' => 'f',
  'G' => 'I',
  'k' => 'F',
  'o' => 'p',
)
---
array_udiff_uassoc()
array (
  'G' => 'I',
  'k' => 'F',
  'o' => 'p',
)
Run Code Online (Sandbox Code Playgroud)