У меня проблема с модификацией массива.PHP - добавление объекта со своими свойствами в массив
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));
Но кажется, что перед отправкой я не могу должным образом добавить объект в массив.
Заранее спасибо.
Массивы в PHP могут иметь элементы разных типов. Ваш код должен работать, даже если объекты в массиве разные. Ищите другие проблемы в своем коде. –
Строка, которую вы используете как для 'array_push', так и' print_r', - это метод, который только читается и используется для «получения» исключенных местоположений из вашего объекта. Он предложил бы мне, что ваша проблема заключается в том, что вы читаете с объекта и ничего не сохраняете для объекта. Попробуйте присвоить результат '... getExcludedLocations()' переменной, например '$ excludedLocations'. Затем 'array_push' этой переменной обновить. Затем верните эту переменную обратно в '... setExcludedLocations()' (используется для установки местоположений объекта) для обновления объекта. то вы можете передать объект обратно. – Luke
Привет, Лука, Спасибо за ваш ответ. Я обновил, как вы сказали $ excludedLocations = $ lineItem-> getTargeting() -> getGeoTargeting() -> getExcludedLocations(); array_push ($ excludedLocations, $ location); если я напечатаю эту переменную, она отображает два элемента. Не могли бы вы рассказать мне, как мне нужно установить его для объекта, чтобы сохранить его? – Geobo