ホームページ  >  記事  >  バックエンド開発  >  PHPで配列がすべて同じかどうかを判断する方法を詳しく解説

PHPで配列がすべて同じかどうかを判断する方法を詳しく解説

WBOY
WBOYオリジナル
2016-07-25 08:52:431567ブラウズ
  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 if($array[$i]!=$array[$i+1]){
  11. Break;
  12. }
  13. }
  14. // 時間がかかります: 処理されました0.144372 秒以内に
コードをコピー

PHP で array_count_values() を使用して完了します

  1. if(count(array_count_values($array))!=1){
  2. echo "phpのトリックメソッドを使用して実行します:push";
  3. }
  4. //0.133642秒で処理されました。
コードをコピー

構築された配列の最初のものは 1 で、次の 99999 はすべて 0 であるため、次の比較として、最初の 99999 が 1、最後の 99999 が 0 である配列を再度構築します。ループの最大回数と最小回数を確認し、両方の実行時間を調べます。 このとき、

//ループメソッドの使用時間: 0.211106 秒で処理されました。 //array_count_values メソッドの使用時間: 0.135076 秒で処理されました。 判定が1つだけの場合、2つの方法でかかる時間はほぼ同じですが、やはりarray_count_valuesの方が速いです。しかし、最も多くの比較を実行し、さまざまな配列要素を配列の最後に配置すると、後者の時間は前者のほぼ半分になります。

array_count_values() 関数とは: PHP は、C 言語を使用して組み込みの array_count_values() メソッドを記述し、たとえば、配列要素が 1、1、2 の場合、次の値を返します。 結果を出力します。 配列(2) { [1]=> int(2) [2]=> int(1) } 1は2回出現し、2は1回出現します。 このとき、配列の要素が何個あるかを確認します。1 でない場合は、同じものが存在する必要があります。

言語に関係なく、より多くの組み込みメソッドを使用します。一般に、専門家の記述メソッドの方が効率的です。もちろん、例外もあるかもしれません。 PHP を使ってプログラムを書く場合、やはり組み込み関数の方が効率的だと感じます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。