Obtenir variable d'élément d'objet dans une ligne de code à partir d'un tableau d'objets en php
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
)
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.