Получение переменной-члена объекта в одной строке кода из массива объектов в php - PullRequest
0 голосов
/ 25 июля 2011

Я попал в ситуацию, когда мне нужно получить значения переменной-члена экземпляров объекта, которые находятся в массиве.Есть ли способ использовать функцию наподобие array_map, чтобы получить их в одну строку, вместо использования цикла foreach.См. Пример кода ниже.

<?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);
?>

Выход:

Массив (

[0] => 10

[1] =>20

[2] => 30

)

1 Ответ

3 голосов
/ 25 июля 2011

Вы можете использовать:

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

print_r($newAray);

Вывод:

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

Хотя, с точки зрения производительности, я думаю, это не сильно изменится.

Редактировать : На самом деле использование array_map намного хуже, чем foreach.Просто быстрый тест с микротаймом и 1000000 итераций дал мне:

foreach: 0.83289s
array_map: 2.95562s

на моей тестовой машине.Так что, я бы сказал, придерживайтесь foreach.

...