0

配列内にあるオブジェクトのインスタンスのメンバー変数の値を取得する必要がある状況に陥りました。foreachループを使用するのではなく、array_mapのような関数を使用してそれらを1行で取得する方法はありますか?以下のコード例をご覧ください。

<?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 に答える