从php中的对象数组中获取一行代码中的对象成员变量

时间:2011-07-25 13:54:54

标签: php arrays oop foreach array-map

我遇到的情况是我需要获取数组中对象实例的成员变量的值。有没有办法使用像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] =&gt; 10

[1] =&gt; 20

[2] =&gt; 30

1 个答案:

答案 0 :(得分:3)

您可以使用:

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

print_r($newAray);

输出:

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

虽然在性能方面,我猜这并没有太大变化。

修改:实际上使用array_map远比foreach差。只需用microtime和1000000次迭代进行快速测试就可以了:

foreach: 0.83289s
array_map: 2.95562s

在我的测试机器上。所以,我会说,坚持使用foreach。