4

配列に含まれる同様のオブジェクトの値を内破する方法はありますか? 私はオブジェクトの配列を持っています:

$this->inObjs

messageIDそして、各プロパティのカンマ区切りの文字列が欲しいです:

$this->inObjs[$i]->messageID

これを行うためのエレガントな方法はありますか、またはまたは同様の方法MacGyverで解決する必要がありますか? 助けてくれてありがとう。get_object_varsforeachs

4

6 に答える 6

3
$allMessageID = '';
foreach ($this->inObjs as $objectDetail) :
    $allMessageID[] = $objectDetail->messageID;
endforeach;

$allMessageID_implode = implode(",", $allMessageID);

echo $allMessageID_implode;
于 2011-04-06T05:27:17.590 に答える
3

クラスを変更できる場合は、__toString を実装できます。

class MyObject {
    private $messageID = 'Hello';
    public function __toString() {
        return $this->messageID;
    }
}
// ...
$objectList = array(new MyObject, new MyObject);
echo implode(',', $objectList);
// Output: Hello,Hello
于 2013-08-30T23:54:51.960 に答える
2

私が見つけた最も簡単な方法は、array_mapを使用することです

$messageIDs = array_map( function($yourObject) { return $yourObject->messageID; }, $this->inObjs );
$string = implode(", ", $messageIDs );
于 2016-01-23T13:56:58.083 に答える
1

私は通常、この状況のヘルパーを作成し、このように使用します


function GetProperties(array $arrOfObjects, $objectName) {
     $arrProperties = array();
     foreach ($arrOfObjects as $obj) {
         if ($obj->$objectName) {
              $arrProperties[] = $obj->$objectName;
         }
     }
     return $arrProperties;
}

于 2011-04-06T05:32:02.287 に答える
1
$messageIDArray;
foreach($this->inObjs as $obj){
   $messageIDArray[] = $obj->messageID;
}

$string = implode(',',$messageIDArray);
于 2011-04-06T05:26:33.230 に答える