如何检查数组中的所有值是否相同?

8

在PHP中,如何快速判断数组中所有值是否相同?


1
此外,很多问题都可以通过谷歌搜索得到答案(比如当前这个问题),因此没有必要在stackoverflow上发布问题。 - SeanJA
2
我不同意。数据越多越好,即使问题已经存在。根据用户提出问题的方式,可能无法使用搜索词进行“谷歌搜索”。StackOverflow和Google可以让程序员学习新技术,并更快、更高效地完成工作。 - zeros-and-ones
6个回答

45
你可以使用以下测试:

count(array_unique($arr)) == 1;

或者你可以使用这个测试:

$arr === array_fill(0,count($arr),$arr[0]);

array_unique 实际上不会修改原始数组。请查看 PHP 手册:http://php.net/manual/zh/function.array-unique.php - St. John Johnson
count(array_unique($arr)) == 1; 这段代码是最有帮助的。 - risingPhoenix1979

14
$results = array_unique($myArray);
if(count($results) == 1){
   // $myArray is all duplicates
}

虽然这是一个有效的答案,但我也要指出array_unique删除重复项,因此如果他不需要包含所有值的数组,则此方法可行。 - Anthony Forloney
4
它不会修改原始数组(在这种情况下是 $myArray),而是返回一个删除了重复项的数组。 - brettkelly
或者,您可以创建一个包含该数组的新变量,并保留原始数组不变。 - Cryophallion
1
@Anthony 这个函数不会影响原始数组。所以 $myArray 会保持不变。 - St. John Johnson

3
您也可以使用以下检查方式:
count(array_count_values($arr)) == 1

0
$myArray = array('1','1','1');
$results = array_unique($myArray);
if(count($results) == 1)
{
    echo"all value is duplicates";
}
else
{
    echo"all value is not duplicates";
}

-1

进行测试运行,看看所有结果是否相同:

foreach ($array as $newarray){
    echo $newarray. '';
}

-1

您可以检查 count(array_intersect($arr1, $arr2)) == 0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接