0

我陷入了一种情况,我需要获取数组中对象实例的成员变量的值。有没有办法使用像 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

)

4

1 回答 1

3

你可以使用:

$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。

于 2011-07-25T13:59:21.087 回答