in_array と isset のどちらが効率的ですか?
大規模な配列を扱う場合、効率を高めるためにコードを最適化することが重要です。一般的な 2 つのアプローチは、in_array 関数を使用する方法と、isset を使用してキーの存在を確認する方法です。
in_array
in_array 関数は、値を配列と比較し、存在する場合は true を返します。 。その時間計算量は O(n) です。ここで、n は配列内の要素の数です。これは、配列サイズが増加するにつれて、検索時間が直線的に増加することを意味します。
isset
isset 関数は、値に関係なく、キーが配列内に存在するかどうかを確認します。 。ハッシュ テーブルを使用してキーと値を保存するため、キー検索の時間計算量は O(1) になります。
提供されたコード例では、次の理由から isset が推奨されます。
ベンチマーク結果
この効率の違いを説明するために、10,000 個の要素を持つ配列を考えてみましょう。
isset: 0.009623 in_array: 1.738441
配列としてサイズが大きくなると、2 つのアプローチ間のパフォーマンスの差がさらに大きくなります
追加の考慮事項
配列内の衝突が懸念される場合、特に $a[$new_val] 構文を使用する場合は、衝突耐性のある構文を使用できます。 $a[md5($new_val)] のようなアプローチです。この手法により、さらに複雑なレイヤーが導入されますが、衝突が起こりやすいキー生成を悪用する潜在的な DoS 攻撃を軽減できます。
以上が大規模な配列の場合、isset は in_array よりも効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。