Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man einen Schlüssel in einem mehrdimensionalen PHP-Array effizient anhand seines Werts finden?

Wie kann man einen Schlüssel in einem mehrdimensionalen PHP-Array effizient anhand seines Werts finden?

Patricia Arquette
Freigeben: 2024-12-09 20:59:15
Original
615 Leute haben es durchsucht

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

Mehrdimensionale PHP-Array-Suche (Schlüssel nach Wert suchen)

In diesem Szenario verfügen Sie über ein mehrdimensionales Array, das eine Sammlung von Produkten darstellt. Jedes Produkt wird durch Eigenschaften wie Name, Slug, Preis usw. definiert. Ihr Ziel besteht darin, eine Möglichkeit zu finden, das Array mithilfe der Slug-Eigenschaft nach einem bestimmten Produkt zu durchsuchen und den entsprechenden Schlüssel im Array zurückzugeben.

Eine Möglichkeit, dies zu erreichen, besteht darin, die Funktionen array_search und array_column zu nutzen. Hier ist eine benutzerdefinierte Funktion, die diesen Ansatz kapselt:

function array_search_multidim(array $array, string $column, string $key)
{
    return array_search($key, array_column($array, $column));
}
Nach dem Login kopieren

Um diese Funktion zu verwenden, würden Sie sie wie folgt aufrufen:

$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
Nach dem Login kopieren

Dadurch wird das $products-Array nach einem Produkt mit durchsucht Die Slug-Eigenschaft entspricht „breville-one-touch-tea-maker-BTM800XL“ und gibt den entsprechenden Schlüssel zurück. In diesem Beispiel wird der Wert 1 zurückgegeben.

Eine weitere mögliche Lösung basiert auf der Funktion array_search. Für diesen Ansatz müssen Sie PHP 5.5.0 oder höher verwenden:

$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
Nach dem Login kopieren

Dieser Code erzielt das gleiche Ergebnis wie das vorherige Beispiel.

Es gibt auch eine dritte Methode, die array_walk_recursive verwendet Durchläuft rekursiv alle Elemente des Arrays und vergleicht den Wert des Slugs mit dem angegebenen Wert:

function array_walk_recursive_search($input, $needle, &$result = null)
{
    if (is_array($input)) {
        foreach ($input as $key => $value) {
            array_walk_recursive_search($value, $needle, $result);
        }
    } else {
        if ($input === $needle) {
            $result = $key;
        }
    }
}
Nach dem Login kopieren

Diese Funktion kann wie folgt aufgerufen werden:

array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
Nach dem Login kopieren

Es ist wichtig zu beachten, dass die Methode array_walk_recursive zwar allgemeiner ist und jede Art von Array-Struktur verarbeiten kann, sie jedoch ist im Allgemeinen langsamer als die anderen Methoden.

Insgesamt hängt die beste Methode von den spezifischen Anforderungen und Einschränkungen Ihrer Anwendung ab. Die beiden effizientesten Methoden sind jedoch diejenigen, die die Funktionen array_search und array_column nutzen.

Das obige ist der detaillierte Inhalt vonWie kann man einen Schlüssel in einem mehrdimensionalen PHP-Array effizient anhand seines Werts finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage