配列に含まれる同様のオブジェクトの値を内破する方法はありますか? 私はオブジェクトの配列を持っています:
$this->inObjs
messageID
そして、各プロパティのカンマ区切りの文字列が欲しいです:
$this->inObjs[$i]->messageID
これを行うためのエレガントな方法はありますか、またはまたは同様の方法MacGyver
で解決する必要がありますか? 助けてくれてありがとう。get_object_vars
foreachs
$allMessageID = '';
foreach ($this->inObjs as $objectDetail) :
$allMessageID[] = $objectDetail->messageID;
endforeach;
$allMessageID_implode = implode(",", $allMessageID);
echo $allMessageID_implode;
クラスを変更できる場合は、__toString を実装できます。
class MyObject {
private $messageID = 'Hello';
public function __toString() {
return $this->messageID;
}
}
// ...
$objectList = array(new MyObject, new MyObject);
echo implode(',', $objectList);
// Output: Hello,Hello
私が見つけた最も簡単な方法は、array_mapを使用することです
$messageIDs = array_map( function($yourObject) { return $yourObject->messageID; }, $this->inObjs );
$string = implode(", ", $messageIDs );
私は通常、この状況のヘルパーを作成し、このように使用します
function GetProperties(array $arrOfObjects, $objectName) {
$arrProperties = array();
foreach ($arrOfObjects as $obj) {
if ($obj->$objectName) {
$arrProperties[] = $obj->$objectName;
}
}
return $arrProperties;
}
$messageIDArray;
foreach($this->inObjs as $obj){
$messageIDArray[] = $obj->messageID;
}
$string = implode(',',$messageIDArray);