首頁  >  文章  >  後端開發  >  php判斷數組是否全部相同方法詳解

php判斷數組是否全部相同方法詳解

WBOY
WBOY原創
2016-07-25 08:52:431614瀏覽
  1. //伪造有100000个数组元素的数组,第一个数组元素为1,后面的99999个都为0
  2. for($i=0;$i<100000;$i ){
  3. if($i==1)
  4. array_push($array,1);
  5. else
  6. array_push($array,0);
  7. }
  8. //第一种用循环方法
  9. $len=count($array);
  10. for ($i=0; $i <$len ; $i ) {
  11. if($array[$i]!=$array[$i 1]){
  12. break;
  13. }
  14. }
  15. // 耗时:Processed in 0.144372 second(s).
复制代码

借助php中的array_count_values()去完成

  1. if(count(array_count_values($array))!=1){
  2. echo "用php中技巧方法跑:push";
  3. }
  4. //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来写程序时,还是觉得内置函数的效率比较高。



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn