161 votes

PHP - Extraction d'une propriété d'un tableau d'objets

J'ai un tableau d'objets Cats :

$cats = Array
    (
        [0] => stdClass Object
            (
                [id] => 15
            ),
        [1] => stdClass Object
            (
                [id] => 18
            ),
        [2] => stdClass Object
            (
                [id] => 23
            )
)

et je veux extraire un tableau d'ID de chats en 1 ligne (pas une fonction ni une boucle).

Je pensais utiliser array_walk avec create_function mais je ne sais pas comment le faire.

Une idée ?

199voto

Josep Alsina Sió Points 56

Si vous avez PHP 5.5 ou une version ultérieure, la meilleure façon est d'utiliser la fonction intégrée array_column() :

$idCats = array_column($cats, 'id');

Mais le fils doit être un tableau ou converti en tableau

4voto

SilentGhost Points 79627
function extract_ids($cats){
    $res = array();
    foreach($cats as $k=>$v) {
        $res[]= $v->id;
    }
    return $res
}

et l'utiliser en une seule ligne :

$ids = extract_ids($cats);

3voto

soulmerge Points 37314

L'avertissement create_function() a été DÉPRÉCIÉ à partir de PHP 7.2.0. Il est fortement déconseillé de se fier à cette fonction.

Les boucles intégrées en PHP sont plus rapides que les boucles interprétées, il est donc logique de faire de celle-ci une ligne unique :

$result = array();
array_walk($cats, create_function('$value, $key, &$result', '$result[] = $value->id;'), $result)

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