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