In PHP ist Array_Column eine sehr nützliche Funktion, insbesondere im Umgang mit mehrdimensionalen Arrays. Es kann den Wert einer Spalte aus einem zweidimensionalen Array extrahieren und ein neues Array zurückgeben. Wenn Sie jedoch Array_Column für verschiedene Arten von Arrays (z. B. numerische Indexarrays und assoziative Arrays) verwenden, stellen Sie möglicherweise fest, dass sie sich nicht genau verhalten. Warum gibt es so einen Unterschied?
Ein numerisches Indexarray ist einer der grundlegendsten Array -Typen, und jedes Element hat einen inkrementellen Index (z. B. 0, 1, 2 usw.). In PHP sind numerische Indexarrays im Allgemeinen in der Reihenfolge angeordnet.
$array = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Jerry'],
['id' => 3, 'name' => 'Spike']
];
$names = array_column($array, 'name');
print_r($names);
Ausgabe:
Array
(
[0] => Tom
[1] => Jerry
[2] => Spike
)
Im obigen Beispiel extrahiert Array_Column den Wert, der der Namensschlüssel jedes Elements im Array entspricht, und gibt ein Array von numerischen Indizes zurück. Da das ursprüngliche Array ein assoziatives Array ist, werden die Werte in der Reihenfolge extrahiert, wenn sie nach Array_Column verarbeitet werden.
Im Gegensatz zu numerischen Index -Arrays verfügt jedes Element eines assoziativen Arrays anstelle des Standard -Numeric Index. Wenn Sie Array_Column für assoziative Arrays verwenden, ist die Leistung unterschiedlich.
$array = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Jerry'],
['id' => 3, 'name' => 'Spike']
];
$names = array_column($array, 'name', 'id');
print_r($names);
Ausgabe:
Array
(
[1] => Tom
[2] => Jerry
[3] => Spike
)
In diesem Beispiel verwendet Array_Column zusätzlich zum Extrahieren des Wertes der Namensspalte auch den Wert der ID -Spalte als Schlüssel zum Neuarray. Was zurückgegeben wird, ist ein assoziatives Array, dessen Schlüssel aus dem ID -Wert des ursprünglichen Arrays stammt.
Zahlenindexarray:
Wenn Array_Column in einem numerischen Indexarray funktioniert, wird ein neues Indexarray gemäß der Reihenfolge des ursprünglichen Arrays generiert. Die Schlüssel für jedes Neue Array werden automatisch generiert und von 0 erhöht.
Assoziatives Array:
Wenn das ursprüngliche Array ein assoziatives Array ist, wird Array_Column den Schlüssel des ursprünglichen Arrays enthält oder wenn ein anderer Schlüssel angegeben wird (z. B. die ID oben), wird dieser angegebene Schlüssel als Schlüssel des Neuarrays verwendet.
Geben Sie den Index an:
Mit Array_Column können Sie eine Array -Spalte als Index angeben. Dies bedeutet, dass Sie nicht nur die Werte einer bestimmten Spalte extrahieren können, sondern auch die Schlüssel steuern können, die das Array zurückgeben. Dies ist sehr nützlich, um Arrays mit spezifischen Schlüsselwerten zu erstellen, insbesondere wenn Sie Daten nach bestimmten Feldern indexieren müssen.
Das Verhalten von Array_Column in numerischen Indexarrays und assoziativen Arrays ist unterschiedlich, hauptsächlich im zurückgegebenen Array -Schlüsselwert. Für numerische Indexarrays verwendet es standardmäßig numerische Indizes. Für assoziative Arrays behält es den ursprünglichen Index bei oder verwendet die von Ihnen angegebene Indexspalte. Das Verständnis dieser Unterschiede kann Ihnen helfen, diese Funktion besser in der tatsächlichen Entwicklung zu nutzen und nicht gedeckte Ergebnisse zu vermeiden.