php findet, ob ein Array-Element vorhanden ist. Im Allgemeinen wird die Methode in_array verwendet.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Parameterbeschreibung:
needle
Der zu suchende Wert ist eine Zeichenfolge, beim Vergleich wird die Groß-/Kleinschreibung beachtet.
Heuhaufen
Array zum Vergleich verwendet
strict
Wenn der Wert des dritten Parameters strict TRUE ist, dann in_array( ) Die Funktion prüft auch, ob der Nadeltyp mit dem im Heuhaufen übereinstimmt
Rückgabewert
Wenn die Nadel gefunden wird, gibt sie TRUE zurück, andernfalls gibt FALSE zurück.
Wenn der Vergleichsarray-Heuhaufen groß ist, ist die In_array-Effizienz sehr gering
Beispiel: Es gibt 100.000 in_array-Paare Das Array der Elemente wird 1000 Mal verglichen
<?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; }?>
Laufzeit:2003.6449432373ms
Verwenden Sie in_array, um zu bestimmen, ob das Element in 100.000 existiert Beim 1000-fachen Vergleich eines Arrays von Elementen beträgt die Laufzeit etwa 2 Sekunden
Wir können array_flip verwenden Tauschen Sie Schlüsselwerte aus und verwenden Sie dann die Methode isset, um zu bestimmen, ob das Element vorhanden ist, was die Effizienz verbessern kann.
Beispiel: Verwenden Sie array_flip, um zuerst den Schlüsselwertaustausch durchzuführen, verwenden Sie dann die Isset-Methode zur Beurteilung und vergleichen Sie 1000 Mal in einem Array mit 100.000 Elementen.
<?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; }?>
Ausführen Zeit: 1,2781620025635ms
Verwenden Sie array_flip und isset, um zu bestimmen, ob ein Element vorhanden ist. Vergleichen Sie 1000 Mal in einem Array von 100.000 Elementen Die Laufzeit beträgt etwa 1,2 Millisekunden
Daher ist für den Vergleich großer Arrays die Verwendung der Methoden array_flip und isset effizienter als in_array Viel höher.
In diesem Artikel wird erläutert, wie Sie die Effizienz der Suche nach Array-Elementen über PHP verbessern können. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Erklärung zum strengen Modus von MySQL
Erklärung zur zweispaltigen Datenmethode in der MySQL-Austauschtabelle
Das obige ist der detaillierte Inhalt vonSo verbessern Sie die Effizienz durch die Suche nach Array-Elementen über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!