ホームページ >バックエンド開発 >PHPチュートリアル >PHP で配列要素を検索する効率を向上させる方法

PHP で配列要素を検索する効率を向上させる方法

墨辰丷
墨辰丷オリジナル
2018-05-23 09:27:211670ブラウズ

この記事では、参考値の高い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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>&#39;;
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(&#39; &#39;, 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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>&#39;;
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(&#39; &#39;, microtime());
 return (float)$usec + (float)$sec;
}
?>

実行時間:

1.2781620025635ms

array_flipisset を使用して、100,000 個の要素の配列を 1000 回比較すると、実行時間は約

になります。そして

isset メソッドは in_array よりもはるかに効率的です。 関連する推奨事項:

php

配列要素から重複を素早く削除する方法

array_sum() を使用して二重引用符で囲まれた配列要素
の合計を計算する方法

array にアクセスする方法要素

エラー報告

以上がPHP で配列要素を検索する効率を向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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