Abrufen der Objektmitgliedvariablen in einer Codezeile aus einem Array von Objekten in PHP
Frage
Ich bin in einer Situation gefangen, in der ich Werte einer Mitgliedsvariable von Instanzen eines Objekts erhalten muss, die sich in einem Array befinden. Gibt es eine Möglichkeit, eine Funktion wie Array_Map zu verwenden, um sie in einer Zeile zu bringen, anstatt eine Foreach -Schleife zu verwenden? Bitte beachten Sie das Codebeispiel unten.
<?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);
?>
Ausgabe ist:
Array (
[0] => 10
[1] => 20
[2] => 30
)
Lösung
Du könntest benutzen:
$newAray = array_map(function ($abcObj) {
return $abcObj->aVar;
}, $Array);
print_r($newAray);
Ausgabe:
Array
(
[0] => 10
[1] => 20
[2] => 30
)
In Bezug auf die leistungsfähige, ich würde vermuten, dass dies nicht viel ändert.
Bearbeiten: Eigentlich verwendet array_map
ist weitaus schlimmer als foreach
. Nur ein kurzer Test mit Mikrotime und 1000000 Iterationen gab mir:
foreach: 0.83289s
array_map: 2.95562s
auf meiner Testmaschine. Also würde ich sagen, bleiben Sie bei der Foreach.