Php 确定两个数组中的键/值是否相同的最简单方法
我有一个如下所示的数组:Php 确定两个数组中的键/值是否相同的最简单方法,php,arrays,Php,Arrays,我有一个如下所示的数组: [items] => Array ( [0] => Array ( [qty] => 1 [class] => P ) [1] => Array ( [qty] => 1 [class] => P ) [2] => Array
[items] => Array
(
[0] => Array
(
[qty] => 1
[class] => P
)
[1] => Array
(
[qty] => 1
[class] => P
)
[2] => Array
(
[qty] => 1
[class] => S
)
)
确定所有内部数组中的[class]值是否相同的最简单方法是什么?我是不是要把它们都循环一遍,一个一个地比较?还是有更好的方法?根据评论进行编辑 仅基于
类
比较检查相等性的解决方案
array_diff()
返回不在被比较数组中的元素。计数返回的元素(count()
)允许检测差异
请注意,array_diff()
可能需要两个以上的数组来检查是否相等。如果有固定数量的数组,只需执行以下操作即可
// Compare 3 arrays
if (count(array_diff($array['items'][0], $array['items'][1], $array['items'][2]))) {
// Arrays differ
}
$n=count($array['items']);
$flag=0;
对于($i=0;$iI不认为这会起作用,因为您正在测试每个内部数组。我需要专门测试每个数组中一个键的值。例如,如果我向第一个内部数组添加一个元素,它会中断。更新了我的答案,使您有两个解决方案。谢谢。因此,基本上,正如我最初问的那样除了通过数组循环进行比较外,没有其他方法。当然,您可以检查if(A&&B&&C)
但是,如果项目的数量未知或较大,并且由于您在其他元素中测试单个值,在PHP中需要逐个检查。因此答案是肯定的-我将不得不循环检查所有项目。如果没有更好的方法,这就是我所需要的。如果类元素在每个ar中处于不同的位置,这也不起作用雷,你看,可能是
$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
}
// Compare 3 arrays
if (count(array_diff($array['items'][0], $array['items'][1], $array['items'][2]))) {
// Arrays differ
}
$n = count($array['items']);
$flag=0;
for($i=0 ; $i<$n ; $i++)
{
if($i!=0)
{
if($array['items'][$i][class]!=$array['items'][$i-1][class])
{
$flag=1;
}
}
}
if($flag==1)
{
// they are equal
}