„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So suchen Sie in einem assoziativen PHP-Array – schnelle Tipps

So suchen Sie in einem assoziativen PHP-Array – schnelle Tipps

Veröffentlicht am 07.11.2024
Durchsuche:347

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.

Suche nach einem Schlüssel in einem assoziativen Array

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.";
}

Suche nach Wert in einem assoziativen Array

Verwenden von array_search() und in_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"

Verwenden einer foreach-Schleife

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.
    }
}

Verwenden von array_filter()

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);

Leistungsbenchmarks zwischen PHP-Array-Funktionen und foreach

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.

How to Search in a PHP Associative Array – Fast tips

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.

Neu bei Inspector? Überwachen Sie Ihre Bewerbung kostenlos

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

How to Search in a PHP Associative Array – Fast tips

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/inspector/how-to-search-in-a-php-associative-array-fast-tips-26o6?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

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