php は、配列要素が存在するかどうかを確認するために、通常、in_array メソッドが使用されます。
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
パラメータの説明:
needle
needle が文字列の場合、比較では大文字と小文字が区別されます。
haystack
比較に使用される配列
strict
3 番目のパラメータ strict の値が TRUE の場合、in_array( ) この関数は、針の種類が干し草の山のものと同じかどうかもチェックします。
戻り値
針が見つかった場合は TRUE を返し、それ以外の場合は TRUE を返します。
2.in_array 内の要素を見つける効率
比較される配列の干し草の山が大きい場合、in_array の効率は非常に低くなります。
例: 100,000 個あります。 in_array ペア 要素の配列は 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;
}?>
使用 in_array 要素が要素の配列を 1000 回比較すると、実行時間は約
2 秒3 要素の検索効率を向上させる方法を使用できます。 array_flip## まず #Exchange キー値を実行し、次に 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; }?>
array_flip と isset を使用して、100,000 要素の配列内に要素が存在するかどうかを 1000 回比較します。実行時間は約 1.2 ミリ秒です。
したがって、大規模な配列の比較には、array_flip メソッドと isset メソッドを使用する方が # より効率的です。 ##in_array はるかに高いです。
この記事では、PHP を使用して配列要素を検索する効率を向上させる方法について説明します。その他の関連コンテンツについては、PHP 中国語 Web サイトを参照してください。
関連する推奨事項:
mysql strict モードについての説明 Strict Mode
php は文字列を分割するためにexplodeを使用しますが、初心者が見落としがちな問題です。
以上がPHPで配列要素を検索して効率を向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。