Assoziative Arrays sind eine grundlegende Datenstruktur in PHP, die es Entwicklern ermöglicht, Schlüssel-Wert-Paare zu speichern. Sie sind vielseitig und werden häufig zur Darstellung strukturierter Daten verwendet. Die Suche nach bestimmten Elementen innerhalb eines assoziativen PHP-Arrays ist eine häufige Aufgabe. Aber die meisten nativen Funktionen, die in PHP verfügbar sind, funktionieren hervorragend mit einfachen Arrays.
Aus diesem Grund müssen wir oft Kombinationen von Funktionen finden, die es uns ermöglichen, dasselbe auf assoziativen Arrays zu tun. Möglicherweise ohne Fehler wegen unzureichendem Arbeitsspeicher?.
In diesem Tutorial werden wir verschiedene Methoden und Techniken zur Suche nach Werten in einem assoziativen PHP-Array untersuchen.
Die Funktion array_key_exists() prüft, ob ein bestimmter Schlüssel in einem assoziativen Array vorhanden ist. Es gibt true zurück, wenn der Schlüssel gefunden wird, andernfalls false.
$fruits = [ 'apple' => 'red', 'banana' => 'yellow', ]; if (array_key_exists('banana', $fruits)) { echo "The key 'banana' exists in the array."; } else { echo "The key 'banana' does not exist in the array."; }
Die Funktion array_search() sucht nach einem Wert in einem assoziativen Array und gibt den entsprechenden Schlüssel zurück, wenn er gefunden wird, oder false, wenn er nicht gefunden wird.
$colors = [ 'apple' => 'red', 'banana' => 'yellow', ]; echo array_search('yellow', $colors); // Print "banana"
Sie können auch Arrays mit komplexeren Daten als Wert verwenden:
$colors = [ 'apple' => ['red'], 'banana' => 'yellow', ]; echo array_search(['red'], $colors); // Print "apple"
In diesem Fall empfehle ich Ihnen, den strengen Vergleichsmodus zu verwenden. Es kann angefordert werden, dass ein dritter boolescher Parameter an array_search übergeben wird:
echo array_search(['red'], $colors, true);
Ähnlich wie array_search() ist die in_array-Funktion, die lediglich ein boolesches Flag anstelle des Schlüssels des Elements zurückgibt.
/* * It also supports strict mode comparison, useful for working with structured data as a value. */ echo in_array(['red'], $colors, true); // Return "true"
Sie können das assoziative Array mithilfe einer foreach-Schleife durchlaufen und manuell nach einem bestimmten Wert suchen. Dies ist nützlich, wenn Sie komplexe Vergleiche oder Manipulationen durchführen müssen, da sich die Schleife im selben Bereich des Arrays befindet, sodass Sie Zugriff auf alle Daten in der Schleife haben.
$targetValue = 'yellow'; foreach ($colors as $key => $value) { if ($value === $targetValue) { echo "The value {$targetValue} is associated with the key {$key}."; break; // Optional: Stop searching after finding the occurrence. } }
Die Funktion array_filter() kann verwendet werden, um das Array zu filtern und nur Elemente zurückzugeben, die einen Testrückruf bestehen.
$colors = [ 'apple' => 'red', 'banana' => 'yellow', ]; $filteredArray = array_filter($colors, function ($value) { return $value === 'red'; }); /* * It contains just one element: ['apple' => 'red'] * ‘banana’ was filtered out. */ var_dump($filteredArray);
Wenn Ihnen die Leistung am Herzen liegt, wird dieser Abschnitt des Artikels mit Sicherheit interessant sein.
Ich habe ein Skript erstellt, um mit array_map und der foreach-Schleife eine einfache Operation für ein Array von 200.000 Elementen auszuführen. Ich habe das Inspector-Paket verwendet, um die Leistung der beiden Anweisungen zu verfolgen. Sie können mit dem Code in dieser Sandbox spielen: https://phpsandbox.io/e/x/5titt
$data = range(1, 200000); $inspector->addSegment(function () use ($data) { array_map(fn($item) => $item * 3, $data); }, 'array_map'); $data = range(1, 200000); $inspector->addSegment(function () use ($data) { foreach ($data as $item) { $data[$item] = $item * 3; } }, 'foreach');
Dutzende Ausführungen zeigen, dass foreach durchweg um etwa 10 % besser als array_map ist.
Aber dieses Ergebnis kann sich je nach Kontextumgebung stark ändern. Wenn Sie das Snippet in der oben verlinkten Sandbox ausführen, werden Sie feststellen, dass foreach 10x effizienter ist als array_map. Sie können das Skript in Ihre lokale Umgebung kopieren und selbst einige Benchmarks erstellen.
Der Grund dafür, dass foreach im Allgemeinen effizienter ist als array_map, liegt darin, dass es nicht die Verwendung eines Rückrufs impliziert. Das Aufrufen einer Funktion verursacht mehr Aufwand, als das Array direkt im selben Bereich zu verwenden. Aus diesem Grund verschwendet array_map bei jeder Iteration etwas mehr Zeit. Es ist jedoch nur für größere Datensätze sichtbar. Je kleiner das Array, desto unbedeutender ist die Lücke.
Inspector ist ein Tool zur Codeausführungsüberwachung, das speziell für Softwareentwickler entwickelt wurde. Sie müssen nichts auf Serverebene installieren, installieren Sie einfach das Composer-Paket und schon kann es losgehen.
Im Gegensatz zu anderen komplexen All-in-One-Plattformen ist Inspector supereinfach und PHP-freundlich. Sie können unser Laravel- oder Symfony-Paket ausprobieren.
Wenn Sie auf der Suche nach effektiver Automatisierung, umfassenden Einblicken und der Möglichkeit sind, Warnungen und Benachrichtigungen an Ihre Messaging-Umgebung weiterzuleiten, testen Sie Inspector kostenlos. Registrieren Sie Ihr Konto.
Oder erfahren Sie mehr auf der Website: https://inspector.dev
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3