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
Patricia ArquetteOriginal
2024-12-09 20:59:15557Durchsuche

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

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

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

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

Diese Funktion kann wie folgt aufgerufen werden:

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

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!

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