162 votes

Comment obtenir un tableau de "clé" spécifique dans un tableau multidimensionnel sans boucle

Supposons que j'ai le tableau multidimensionnel suivant (récupéré 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 appel de fonction php " intégré " ? ou une ligne de code ? Je suis conscient du bouclage traditionnel et de l'obtention de la valeur, mais je n'ai pas besoin de ceci :

 foreach($users as $user) {
    $ids[] = $user['id'];
}
print_r($ids);

Peut-être que certains array_map() et call_user_func_array() peuvent faire la magie.

2voto

deceze Points 200115

Si id est la première clé du tableau, cela fera :

 $ids = array_map('current', $users);

Vous ne devriez pas nécessairement vous fier à cela cependant. :)

-1voto

Muraguri E Points 23

Vous pouvez également utiliser array_reduce() si vous préférez une approche plus fonctionnelle

Par exemple:

 $userNames = array_reduce($users, function ($carry, $user) {
    array_push($carry, $user['name']);
    return $carry;
}, []);

Ou si vous aimez être chic,

 $userNames = [];
array_map(function ($user) use (&$userNames){
    $userNames[]=$user['name'];
}, $users);

Ceci et toutes les méthodes ci-dessus bouclent cependant dans les coulisses ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X