修改数组时遇到问题。
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));
但似乎在发送之前,我无法正确地将对象添加到数组中。
提前致谢。
答案 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);