この記事では、参考値の高いPHPにおける配列要素の検索を効率化する方法を中心に紹介します。興味のある友人は参考にしていただければ幸いです。
1.php in_arrayメソッドの説明
PHPは配列要素が存在するかどうかを調べるのに一般的にはin_arrayメソッドが使用されます。
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
パラメータの説明:
needle
needle が文字列の場合、比較では大文字と小文字が区別されます。干し草の山
比較に使用される配列strict
3番目のパラメータstrictの値がTRUEの場合、in_array()関数は針のタイプが同じかどうかもチェックします干し草の山の中のそれ戻り値
針が見つかった場合はTRUEを返し、それ以外の場合はFALSEを返します。
2. in_array 内の要素を見つける効率
比較される配列の干し草の山が大きい場合、in_array の効率は非常に低くなります例: in_array を使用して 100,000 個の要素を持つ配列を 1000 回比較します
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用in_array比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); in_array($str, $arr); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
2003.6449432373ms
in_array を使用して、100,000 個の要素の配列内で要素が存在するかどうかを 1000 回比較します。実行時間は約 2 秒 かかります。
3検索要素の効率を向上させるメソッド
まずarray_flip を使用してキーと値の交換を実行し、次に isset メソッドを使用して要素が存在するかどうかを判断することで、効率を向上させることができます。
例: array_flip を使用して最初にキーと値の交換を実行し、次に isset メソッドを使用して 100,000 要素の配列で 1000 回判定、比較します
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 键值互换 $arr = array_flip($arr); // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用isset比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); isset($arr[$str]); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
1.2781620025635ms
array_flip と isset を使用して、100,000 個の要素の配列を 1000 回比較すると、実行時間は約
になります。そしてisset メソッドは in_array よりもはるかに効率的です。 関連する推奨事項:
php array_sum() を使用して二重引用符で囲まれた配列要素
の合計を計算する方法
以上がPHP で配列要素を検索する効率を向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。