So verbessern Sie die Effizienz durch die Suche nach Array-Elementen über PHP

jacklove
Freigeben: 2023-03-31 06:58:02
Original
2488 Leute haben es durchsucht

1.php in_array-Methodenbeschreibung

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 ] )
Nach dem Login kopieren

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.

2. Effizienz der In_array-Elementsuche

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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
Nach dem Login kopieren

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

3. Methoden zur Verbesserung der Effizienz beim Auffinden von Elementen

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 &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
Nach dem Login kopieren

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

PHP verwendet Explodieren, um Zeichenfolgen zu teilen, Probleme, die Anfänger leicht übersehen. Erklärung

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage