Obtenir variable d'élément d'objet dans une ligne de code à partir d'un tableau d'objets en php

StackOverflow https://stackoverflow.com/questions/6817219

Question

Je suis pris dans une situation où je dois obtenir des valeurs d'une variable membre d'instances d'un objet qui se trouvent dans un tableau. Est-il possible d'utiliser une fonction comme array_map pour les obtenir dans une ligne plutôt que d'utiliser une boucle foreach. S'il vous plaît voir l'exemple de code ci-dessous.

<?php

Class abc
{
   public $aVar;
   function __construct($Initialize)
   {
       $this->aVar = $Initialize;
   }
};

$Array = array(new abc(10), new abc(20), new abc(30));

$Array2 = array();

foreach ($Array as $Element)
{
    array_push($Array2, $Element->aVar);
}

print_r($Array2);
?>

sortie est la suivante:

array (

[0] => 10

[1] => 20

[2] => 30

)

Était-ce utile?

La solution

Vous pouvez utiliser:

$newAray = array_map(function ($abcObj) {
    return $abcObj->aVar;
}, $Array);

print_r($newAray);

Sortie:

Array
(
    [0] => 10
    [1] => 20
    [2] => 30
)

Bien que, en terme de performance, je suppose que cela ne change pas beaucoup.

Modifier : En fait, en utilisant array_map est bien pire que foreach. Juste un test rapide avec des itérations de Microtime et 1000000 m'a donné:

foreach: 0.83289s
array_map: 2.95562s

sur ma machine de test. Donc, je dirais que, bâton avec le foreach.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top