我应该使用 array_diff_assoc 还是 ===?
Should i use array_diff_assoc or ===?
我正在尝试比较两个数组以查看它们是否已排序。
array_diff_assoc 和使用 === 运算符比较两个数组有什么区别?
它们是一回事吗?
例如
$arr_a
$arr_b
array_diff_assoc($arr_a, $arr_b)
与
相同
$arr_a === $arr_b
?
简单的例子告诉我们这些是不同的方法:
$a = ['t' => 2, 'p' => 3];
$b = ['p' => 3, 't' => 2];
var_dump($a === $b); // false, arrays are not identical
var_dump(array_diff_assoc($a, $b));
// array(0) {} - means that there's no difference between these arrays
// they have same keys with same values, but in different orders
// and for `===` order is important
有几点不同。
array_diff_assoc
return 包含 a 中未在 b 中找到的元素的数组。
$a = [ 1 => 'first' , 2 , 3];
$b = [ 1 => 'first' , 2 , 4 , 3];
var_dump(array_diff_assoc($a,$b) // [ 3 => 3 ] because in a element 3 key is 3 and in b element 3 is 4.
另外 array_diff_assoc
不适用于多维数组。有关详细信息,请访问文档 array_diff_assoc
$a === $b
return true 或 false 基于 key/value 对比较以及元素的顺序,它可以与多维数组一起使用。因此,如果您需要真假比较,请使用
$a === $b // if order and type is important
$a == $b // if order and type are not important
1 === '1' // false
1 == '1' //true
有关详细信息,请访问文档 Array Operators
还应说明 array_diff_assoc()
将进行字符串比较。这进一步加强了早期的见解,即这些技术绝对不同。
Two values from key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In other words a strict check takes place so the string representations must be the same. PHP Docs
代码:(Demo)
$arr_a = [1, false, null, 0, '0'];
$arr_b = ['1', null, 0, false, 0];
var_export(
array_diff_assoc($arr_a, $arr_b)
);
echo "\n---\n";
$arr_a = [1, false, '0'];
$arr_b = ['1', null, 0];
var_export(
array_diff_assoc($arr_a, $arr_b)
);
echo "\n---\n";
var_export($arr_a === $arr_b);
输出:
array (
2 => NULL,
3 => 0,
)
---
array (
)
---
false
我正在尝试比较两个数组以查看它们是否已排序。 array_diff_assoc 和使用 === 运算符比较两个数组有什么区别? 它们是一回事吗?
例如
$arr_a
$arr_b
array_diff_assoc($arr_a, $arr_b)
与
相同$arr_a === $arr_b
?
简单的例子告诉我们这些是不同的方法:
$a = ['t' => 2, 'p' => 3];
$b = ['p' => 3, 't' => 2];
var_dump($a === $b); // false, arrays are not identical
var_dump(array_diff_assoc($a, $b));
// array(0) {} - means that there's no difference between these arrays
// they have same keys with same values, but in different orders
// and for `===` order is important
有几点不同。
array_diff_assoc
return 包含 a 中未在 b 中找到的元素的数组。
$a = [ 1 => 'first' , 2 , 3];
$b = [ 1 => 'first' , 2 , 4 , 3];
var_dump(array_diff_assoc($a,$b) // [ 3 => 3 ] because in a element 3 key is 3 and in b element 3 is 4.
另外 array_diff_assoc
不适用于多维数组。有关详细信息,请访问文档 array_diff_assoc
$a === $b
return true 或 false 基于 key/value 对比较以及元素的顺序,它可以与多维数组一起使用。因此,如果您需要真假比较,请使用
$a === $b // if order and type is important
$a == $b // if order and type are not important
1 === '1' // false
1 == '1' //true
有关详细信息,请访问文档 Array Operators
还应说明 array_diff_assoc()
将进行字符串比较。这进一步加强了早期的见解,即这些技术绝对不同。
Two values from key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In other words a strict check takes place so the string representations must be the same. PHP Docs
代码:(Demo)
$arr_a = [1, false, null, 0, '0'];
$arr_b = ['1', null, 0, false, 0];
var_export(
array_diff_assoc($arr_a, $arr_b)
);
echo "\n---\n";
$arr_a = [1, false, '0'];
$arr_b = ['1', null, 0];
var_export(
array_diff_assoc($arr_a, $arr_b)
);
echo "\n---\n";
var_export($arr_a === $arr_b);
输出:
array (
2 => NULL,
3 => 0,
)
---
array (
)
---
false