おそらく、一連のテストケースによって、これらの関連するネイティブ機能間の混乱が解消されます。strcasecmp()
デモンストレーション/説明を簡略化するために、大文字と小文字を区別しないネイティブの比較関数を一貫して使用します。
各関数がどのように動作するかについてのわかりやすい英語の説明は次のとおりです。
array_diff()
-大文字と小文字を区別する値のみの比較
array_diff_key()
-大文字と小文字を区別するキーのみの比較
array_diff_ukey()
-大文字と小文字を区別しないキーのみの比較
array_diff_assoc()
-大文字と小文字を区別するキーと大文字と小文字を区別する値の比較
array_diff_uassoc()
-*最初に発生する大文字と小文字を区別しないキーと大文字と小文字を区別する値の比較
array_udiff()
-大文字と小文字を区別しない値のみの比較
array_udiff_assoc()
-大文字と小文字を区別するキーと大文字と小文字を区別しない値の比較
array_udiff_uassoc()
-大文字と小文字を区別しないキーと大文字と小文字を区別しない値の比較
*配列内の修飾オカレンスの順序により、および比較array_diff_uassoc()
に関して5.がどのように異なる動作をするかに細心の注意を払ってください。['c' => 'd']
['m' => 'n']
$second
コード:(デモ)
$first = [
'A' => 'B',
'c' => 'd',
'E' => 'f',
'g' => 'H',
'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'));
出力:
array_diff()
array (
'E' => 'f',
'o' => 'p',
)
---
array_diff_key()
array (
'E' => 'f',
'g' => 'H',
'k' => 'F',
'o' => 'p',
)
---
array_diff_ukey()
array (
'k' => 'F',
)
---
array_diff_assoc()
array (
'A' => 'B',
'c' => 'd',
'E' => 'f',
'g' => 'H',
'k' => 'F',
'm' => 'n',
'o' => 'p',
)
---
array_diff_uassoc()
array (
'A' => 'B',
'E' => 'f',
'k' => 'F',
'm' => 'n',
'o' => 'p',
)
---
array_udiff()
array (
'o' => 'p',
)
---
array_udiff_assoc()
array (
'E' => 'f',
'g' => 'H',
'k' => 'F',
'o' => 'p',
)
---
array_udiff_uassoc()
array (
'k' => 'F',
'o' => 'p',
)