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

)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top