有沒有一種方法來破壞數組中包含的類似對象的值?我有對象的數組:Implode對象數組中的給定名稱的所有屬性 - PHP
$this->inObjs
,我想用逗號分隔他們的每一個messageID
屬性的字符串:
$this->inObjs[$i]->messageID
有一種優雅的方式來做到這一點還是我去必須MacGyver
與get_object_vars
或foreachs
或類似的解決方案嗎?謝謝您的幫助。
有沒有一種方法來破壞數組中包含的類似對象的值?我有對象的數組:Implode對象數組中的給定名稱的所有屬性 - PHP
$this->inObjs
,我想用逗號分隔他們的每一個messageID
屬性的字符串:
$this->inObjs[$i]->messageID
有一種優雅的方式來做到這一點還是我去必須MacGyver
與get_object_vars
或foreachs
或類似的解決方案嗎?謝謝您的幫助。
$messageIDArray;
foreach($this->inObjs as $obj){
$messageIDArray[] = $obj->messageID;
}
$string = implode(',',$messageIDArray);
$allMessageID = '';
foreach ($this->inObjs as $objectDetail) :
$allMessageID[] = $objectDetail->messageID;
endforeach;
$allMessageID_implode = implode(",", $allMessageID);
echo $allMessageID_implode;
我通常做一個助手針對這種情況,並使用它像這樣
function GetProperties(array $arrOfObjects, $objectName) {
$arrProperties = array();
foreach ($arrOfObjects as $obj) {
if ($obj->$objectName) {
$arrProperties[] = $obj->$objectName;
}
}
return $arrProperties;
}
如果你可以修改類,可以實現__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_walk($result, create_function('&$v', '$v = $v->property;'));
$result = implode(',', $result);
或者:
array_walk($result, function(&$v, &$k) use (&$result) { $v = $v->name; });
$result = implode(',', $result);
哪裏$v->property
是你的對象屬性名內爆。
另請參閱array_map()。
,我發現使用array_map
$messageIDs = array_map(function($yourObject) { return $yourObject->messageID; }, $this->inObjs);
$string = implode(", ", $messageIDs);
是的最簡單的方法,那就是我想通了 - 謝謝。 – linus72982 2011-04-06 05:29:42
他說他知道關於foreach – danidacar 2011-04-06 05:30:07
我不知道他找到了什麼解決方案,所以我寫了我的。只是一個字foreach對我來說並不意味着什麼... – Headshota 2011-04-06 05:35:24