php判断数组是否全部相同方法详解

发布时间:2019-07-23编辑:脚本学堂
在php中如何判断一个数组中所有的元素是否相同,使用php内置函数判断数组是否完全相同,需要的朋友参考下。

说到判断数组元素是否完全相同,你可能会想到php循环去判断.
先看一个循环的代码:
 

复制代码 代码示例:
//伪造有100000个数组元素的数组,第一个数组元素为1,后面的99999个都为0
 for($i=0;$i<100000;$i++){
    if($i==1)
      array_push($array,1);
   else
      array_push($array,0);
 }
 
 //第一种用循环方法
 $len=count($array);
 for ($i=0; $i <$len ; $i++) {
   if($array[$i]!=$array[$i+1]){
     break;
   }
 }
 
// 耗时:Processed in 0.144372 second(s).
 

借助php中的array_count_values()去完成
 

复制代码 代码示例:
if(count(array_count_values($array))!=1){
      echo "用php中技巧方法跑:push";
 }
 
//Processed in 0.133642 second(s).
 

因为构造的数组第一个为1,后面99999都为0,再次构造一个前面99999个都为1,最后一个为0,作为一个循环最多次和最少次的比较,再看二者运行时间:
此时,


//利用循环的方法所用时间:Processed in 0.211106 second(s).
//利用array_count_values方法所用时间:Processed in 0.135076 second(s).
当只需要进行一次判断时,二者的方法所耗时间相差无几,但利用array_count_values仍要快一些。但是当我们进行最多次比较,把不同的那个数组元素放在数组尾,这时后者所用时间几乎是前者的一半。

array_count_values()是个什么函数:
php中用c语言内置写了一个array_count_values()的方法,此法用来判断每个数组元素出现的次数,例如数组元素有1,1,2,那么返回:
打印结果:
array(2) { [1]=> int(2) [2]=> int(1) }
1出现了两次,2出现了1次。
此时再判断数组元素有几个,如果不是1个,那就肯定有相同的。

多用内置方法,不管哪门语言,高手的写法一般更高效。当然,可能也有例外。
用php来写程序时,还是觉得内置函数的效率比较高。