Supposons que j'ai le tableau multidimensionnel suivant (récupéré à partir de MySQL ou d'un service):
array(
array(
[id] => xxx,
[name] => blah
),
array(
[id] => yyy,
[name] => blahblah
),
array(
[id] => zzz,
[name] => blahblahblah
),
)
Pouvons-nous obtenir un tableau de id
s dans un seul appel de fonction php " intégré "? ou une ligne de code?
Je suis conscient de la boucle traditionnelle et de l'obtention de la valeur, mais je n'en ai pas besoin:
foreach($users as $user) {
$ids[] = $user['id'];
}
print_r($ids);
Peut-être certains array_map()
et call_user_func_array()
peut faire la magie.
foreach($users as $user) {$ids[] = $user['id'];}
en une seule ligne! mais vous savez ce que je veux dire / besoin :-)Réponses:
Depuis php 5.5, vous pouvez utiliser
array_column
:C'est l'option préférée sur tout projet moderne. Cependant, si vous devez prendre en charge php> 5.5, les alternatives suivantes existent:
Depuis php 5.3, vous pouvez utiliser
array_map
avec une fonction anonyme, comme ceci:Avant (techniquement php 4.0.6+) , vous devez créer une fonction anonyme avec à la
create_function
place:la source
function ($ar) {return $ar['id'];}
valeur de retour de la clé, ce serait génial! :-)['ball' => ['golf' => 7, 'basket' => 5, 'soccer' => 6], 'shuttle' => ['badminton' => 1]]
.array_map
avec une fonction de flèche:$ids = array_map(fn ($ar) => $ar['id'], $users);
PHP 5.5+
À partir de PHP5.5 +, vous avez array_column () à votre disposition, ce qui rend tous les éléments ci-dessous obsolètes.
PHP 5.3+
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
La solution de @phihag fonctionnera parfaitement en PHP à partir de PHP 5.3.0, si vous avez besoin de support avant cela, vous devrez copier ce wp_list_pluck.
PHP <5,3
Wordpress 3.1+Dans Wordpress, il existe une fonction appelée wp_list_pluck Si vous utilisez Wordpress, cela résout votre problème.
PHP <5,3Si vous n'utilisez pas Wordpress , puisque le code est open source, vous pouvez copier-coller le code dans votre projet (et renommer la fonction en quelque chose que vous préférez, comme array_pick). Voir la source ici
la source
Si
id
est la première clé du tableau, cela fera:Cependant, vous ne devriez pas nécessairement vous y fier. :)
la source
Vous pouvez également utiliser
array_reduce()
si vous préférez une approche plus fonctionnellePar exemple:
Ou si tu aimes être chic,
Ceci et toutes les méthodes ci-dessus font une boucle dans les coulisses;)
la source