根据评论编辑
仅基于class
比较检查相等性的解决方案
$n = count($array['items']);
$elem = $array['items'][0]['class'];
for ($i=1 ; $i<$n ; $i++)
if ($elem !== $array['items'][$i]['class'])
break;
if ($i >= $n) {
// equal
}
特征
- 最多 N-1 ($n-1) 次比较
- 使用
!==
和不!=
检查完美匹配(类型和值)
- 设置
elem
为第一个元素[0]
,这样 PHP 就不必一直获取它
测试内部数组是否相等的解决方案
使用array_diff返回数组之间的差异。
例如,比较 N 个数组[items]
(最多进行 N-1 次比较)
$n = count($array['items']);
for($i=1 ; $i<$n ; $i++)
if (count(array_diff($array['items'][0], $array['items'][$i])))
break;
if ($i >= $n) {
// they are equal
}
array_diff()
返回不在被比较数组中的元素。计算返回的元素 ( count()
) 可以检测差异。
请注意,array_diff()
可能需要两个以上的数组来检查是否相等。如果你有固定数量的数组,你可以简单地做
// Compare 3 arrays
if (count(array_diff($array['items'][0], $array['items'][1], $array['items'][2]))) {
// Arrays differ
}