我应该使用array_diff_assoc还是===?

时间:2018-03-27 14:06:01

标签: php comparison equals-operator

我试图比较两个数组以查看它们是否已排序。 array_diff_assoc和使用===运算符比较两个数组有什么区别? 它们是一样的吗?

例如

$arr_a === $arr_b

相同
Dim f = Await YahooFinanceFactory.CreateAsync
Dim items1 = Await f.GetHistoricalDataAsync("SPY", #1/1/2018#)
Dim items2 = Await f.GetHistoricalDataAsync("^FTSE", #1/1/2018#)

2 个答案:

答案 0 :(得分:2)

简单的例子告诉我们这些是不同的方法:

$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

答案 1 :(得分:1)

有几点不同。

array_diff_assoc返回一个数组,其中包含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基于键/值对比较返回true或false,它可以与多维数组一起使用。因此,如果您需要进行真或假比较,请使用

$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