In diesem Artikel wird hauptsächlich vorgestellt, wie die Effizienz der Suche nach Array-Elementen in PHP verbessert werden kann, was einen guten Referenzwert hat. Interessierte Freunde können darauf verweisen, ich hoffe, es wird für alle hilfreich sein.
1.php in_array-Methodenbeschreibung
PHP findet, ob ein Array-Element vorhanden ist. Im Allgemeinen wird die in_array-Methode verwendet.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Parameterbeschreibung:
Nadel
Der zu suchende Wert. Wenn „nadel“ eine Zeichenfolge ist, wird beim Vergleich die Groß-/Kleinschreibung beachtet.
Heuhaufen
Array zum Vergleich verwendet
streng
Wenn der Wert des dritten Parameters strict TRUE ist, prüft die Funktion in_array() auch, ob der Nadeltyp mit dem in Haystack übereinstimmt
Rückgabewert
Gibt TRUE zurück, wenn die Nadel gefunden wird, andernfalls wird FALSE zurückgegeben.
2. Effizienz der in_array-Elementsuche
Wenn der Vergleichsarray-Heuhaufen groß ist, ist die in_array-Effizienz sehr niedrig
Beispiel: Verwenden Sie in_array, um 1000 Vergleiche für ein Array mit 100.000 Elementen durchzuführen Verwenden Sie
in_array, um zu bestimmen, ob ein Element 1000 Mal in einem Array von 100.000 Elementen vorhanden ist. Die Laufzeit dauert etwa
3. Methode zur Verbesserung der Effizienz beim Auffinden von Elementen
Wir können zuerstarray_flip für den Schlüsselwertaustausch verwenden und dann isset verwenden Methode zum Bestimmen des Elements Ob vorhanden, dies kann die Effizienz verbessern.
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; } // 记录开始时间 $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; } ?>
1,2781620025635msVerwenden Sie array_flip
undisset
um das Element zu bestimmen Existiert es, 1000-maliger Vergleich in einem Array von 100.000 Elementen, die Laufzeit dauert etwa1,2 ms
Für den Vergleich großer Arrays verwenden Sie also
array_flip undisset sind viel effizienter als in_array.
Verwandte Empfehlungen: php Array-ElementeSchnelle Deduplizierungsmethode
So verwenden Sie array_sum(), um die Summe von
Array-ElementZugriff auf Array-Element
in PHP doppelte Anführungszeichen Umgang mit Fehlerberichten
Das obige ist der detaillierte Inhalt vonSo verbessern Sie die Effizienz beim Auffinden von Array-Elementen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!