Heim >Backend-Entwicklung >PHP-Tutorial >Ist „isset' beim Überprüfen von Array-Elementen schneller als „in_array'?

Ist „isset' beim Überprüfen von Array-Elementen schneller als „in_array'?

Susan Sarandon
Susan SarandonOriginal
2024-11-11 11:02:03459Durchsuche

Is `isset` Faster than `in_array` for Checking Array Elements?

Geschwindigkeitsvergleich: in_array vs. isset

Bei der Arbeit mit großen Arrays ist es entscheidend, die Codeleistung zu optimieren. Was ist schneller: die in_array-Funktion oder das isset-Konstrukt?

in_array:

Diese Funktion führt eine lineare Suche durch und durchläuft das Array, um eine Übereinstimmung zu finden. Es hat eine zeitliche Komplexität von O(n), wobei n die Größe des Arrays ist.

isset:

isset hingegen verwendet einen Hash Suche, um festzustellen, ob ein bestimmter Schlüssel in einem assoziativen Array vorhanden ist. Dies macht es viel schneller als in_array, mit einer konstanten Zeitkomplexität von O(1).

Leistungstest:

Um diesen Geschwindigkeitsunterschied zu demonstrieren, können wir einen durchführen Benchmark:

$a = array();
for ($i = 0; $i < 10000; ++$i) {
    $v = rand(1, 1000000);
    $a[$v] = $v;
}

$start = microtime(true);

for ($i = 0; $i < 10000; ++$i) {
    isset($a[rand(1, 1000000)]);
}

$total_time = microtime(true) - $start;
echo "isset: " . number_format($total_time, 6) . PHP_EOL;

$start = microtime(true);

for ($i = 0; $i < 10000; ++$i) {
    in_array(rand(1, 1000000), $a);
}

$total_time = microtime(true) - $start;
echo "in_array: " . number_format($total_time, 6) . PHP_EOL;

Ergebnisse:

Die Testergebnisse zeigen, dass isset deutlich schneller ist als in_array, was den Vorteil seiner konstanten Zeitkomplexität demonstriert.

Fazit:

Bei der Überprüfung der Existenz von Elementen in einem Array ist isset aufgrund seiner schnelleren Leistung die bevorzugte Wahl. Wenn jedoch die Reihenfolge der Elemente wichtig ist, sollte in_array verwendet werden, da dadurch die Reihenfolge der Elemente erhalten bleibt.

Das obige ist der detaillierte Inhalt vonIst „isset' beim Überprüfen von Array-Elementen schneller als „in_array'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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