PHP - 将一个具有属性的对象添加到数组中

时间:2017-02-19 22:23:03

标签: php arrays function object properties

修改数组时遇到问题。

foreach ($page->getResults() as $lineItem) {
  print_r($lineItem->getTargeting()->getGeoTargeting()->getExcludedLocations());
}

此代码给出了结果:

Array
(
    [0] => Google\AdsApi\Dfp\v201611\Location Object
        (
            [id:protected] => 2250
            [type:protected] => COUNTRY
            [canonicalParentId:protected] =>
            [displayName:protected] => France
        )
)

我试图在此数组中添加另一个[1]相同类型的对象。

我创建了一个类来创建和添加一个对象:

class Location{
    public function createProperty($propertyName, $propertyValue){
        $this->{$propertyName} = $propertyValue;
    }
}

$location = new Location();
$location->createProperty('id', '2792');
$location->createProperty('type', 'COUNTRY');
$location->createProperty('canonicalParentId', '');
$location->createProperty('displayName', 'Turkey');    

array_push($lineItem->getTargeting()->getGeoTargeting()->getExcludedLocations(), $location);  

然后,如果我把它传递给print_r()函数

print_r($lineItem->getTargeting()->getGeoTargeting()->getExcludedLocations());

它显示了相同的结果。

最后,我需要将此更新的整个$ lineItem发送到此函数

$lineItems = $lineItemService->updateLineItems(array($lineItem));

但似乎在发送之前,我无法正确地将对象添加到数组中。

提前致谢。

1 个答案:

答案 0 :(得分:1)

PHP将数组作为值而不是作为引用返回。这意味着您必须以某种方式设置修改后的值。

查看显然有问题的library,似乎有setExcludedLocations方法用于此目的。

所以你的代码应该是这样的:

$geo_targeting = $lineItem->getTargeting()->getGeoTargeting();
$excluded_locations = $geo_targeting->getExcludedLocations();
array_push($excluded_locations, $location);
$geo_targeting->setExcludedLocations($excluded_locations);