Nehmen wir an, ich habe das folgende mehrdimensionale Array (von MySQL oder einem Dienst abgerufen):
array(
array(
[id] => xxx,
[name] => blah
),
array(
[id] => yyy,
[name] => blahblah
),
array(
[id] => zzz,
[name] => blahblahblah
),
)
Können wir ein Array von id
s in einem " eingebauten " PHP-Funktionsaufruf erhalten? oder eine Codezeile?
Ich bin mir der traditionellen Schleife bewusst und erhalte den Wert, aber ich brauche dies nicht:
foreach($users as $user) {
$ids[] = $user['id'];
}
print_r($ids);
Vielleicht einige array_map()
und call_user_func_array()
können die Magie tun.
foreach($users as $user) {$ids[] = $user['id'];}
in einer Zeile schreiben kann ! aber du weißt was ich meine / brauche :-)Antworten:
Seit PHP 5.5 können Sie verwenden
array_column
:Dies ist die bevorzugte Option für jedes moderne Projekt. Wenn Sie jedoch PHP> 5.5 unterstützen müssen, gibt es die folgenden Alternativen:
Seit PHP 5.3 können Sie
array_map
mit einer anonymen Funktion wie folgt verwenden:Vor (Technisch PHP 4.0.6+) müssen Sie
create_function
stattdessen eine anonyme Funktion erstellen mit :quelle
function ($ar) {return $ar['id'];}
Rückgabewert des Schlüssels ähnelt , wäre das fantastisch! :-)['ball' => ['golf' => 7, 'basket' => 5, 'soccer' => 6], 'shuttle' => ['badminton' => 1]]
.array_map
mit einer Pfeilfunktion verwenden :$ids = array_map(fn ($ar) => $ar['id'], $users);
PHP 5.5+
Ab PHP5.5 + steht Ihnen array_column () zur Verfügung, wodurch alle folgenden Punkte überholt sind.
PHP 5.3+
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
Die Lösung von @phihag funktioniert in PHP ab PHP 5.3.0 einwandfrei. Wenn Sie zuvor Unterstützung benötigen, müssen Sie diesen wp_list_pluck kopieren.
PHP <5,3
Wordpress 3.1+In Wordpress gibt es eine Funktion namens wp_list_pluck. Wenn Sie Wordpress verwenden, wird Ihr Problem gelöst.
PHP <5,3Wenn Sie Wordpress nicht verwenden , können Sie den Code kopieren und in Ihr Projekt einfügen, da der Code Open Source ist (und die Funktion in etwas umbenennen, das Sie bevorzugen, wie array_pick). Quelle hier anzeigen
quelle
Wenn dies
id
der erste Schlüssel im Array ist, reicht Folgendes aus:Darauf sollten Sie sich jedoch nicht unbedingt verlassen. :) :)
quelle
Sie können auch verwenden,
array_reduce()
wenn Sie einen funktionaleren Ansatz bevorzugenZum Beispiel:
Oder wenn Sie Lust haben,
Diese und alle oben genannten Methoden führen jedoch eine Schleife hinter die Kulissen;)
quelle