【问题标题】:Getting object member variable in one line of code from an array of objects in php从php中的对象数组中的一行代码中获取对象成员变量
【发布时间】:2011-10-12 15:10:25
【问题描述】:

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

)

【问题讨论】:

    标签: php arrays oop foreach array-map


    【解决方案1】:

    你可以使用:

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

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多