Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Добавление данных в существующий массив

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Exponat
Отправлено: 19 Апреля, 2016 - 15:17:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Здравствуйте.
Создается вот такой массив:
PHP:
скопировать код в буфер обмена
  1. $jsonData[]=  array(
  2.   "orderID" => $ar_sales["ID"],
  3.   "dateCreate" => $ar_sales["DATE_INSERT"],
  4.   /*"contents" => array(
  5.     array(
  6.       "productID" => 34,
  7.       "productName" => "Супер товар",
  8.       "quantity" => 1
  9.     ),
  10.     array(
  11.       "productID" => 56,
  12.       "productName" => "Чудо товар",
  13.       "quantity" => 3
  14.     )
  15.   ),*/
  16.   "orderDescript" => $ar_sales["USER_DESCRIPTION"],
  17.   );

Как видите в нем закомментирован ключ "contents" со своим массивчиком. Вот мне и нужно туда вставить данные в такой же структуре.

А вот данные которые я формирую для вставки и вот как я их вставляю:
PHP:
скопировать код в буфер обмена
  1. $dbBasketItems = CSaleBasket::GetList(запрос);
  2. while ($arItems = $dbBasketItems->Fetch()){
  3. array_push($jsonData,array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]));
  4. }


Но при команде echo json_encode($jsonData); те данные что я добавляю выводятся за общим деревом JSON:
PHP:
скопировать код в буфер обмена
  1. [{"orderID":"4763","dateCreate":"","orderDescript":""},{"productID":"40672","productName":"","quantity":"1.00"},{"productID":"40664","productName":"","quantity":"1.00"}]

А нужно чтоб было так:
PHP:
скопировать код в буфер обмена
  1. [{"orderID":"4763","dateCreate":"","contents":[{"productID":40672,"productName":"","quantity":"1.00"},{"productID":40664,"productName":"","quantity":"1.00"}],""orderDescript":""}]


Можете помочь?
Спасибо.
 
 Top
kotyara1979
Отправлено: 19 Апреля, 2016 - 16:54:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Товары вы добавляете не в ту ветку массива.
"Шапка" заказа пишется в $jsonData[], т.е. создается ветка со следующим числовым индексом. Точно таким же образом работает у вас array_push. Для того, что бы данные записались правильно, нужно передавать в array_push $jsonData[нужный числовой индекс]['contents'].

(Отредактировано автором: 19 Апреля, 2016 - 16:57:25)



-----
Сделать можно все. Главное одеть каску.
 
 Top
Exponat
Отправлено: 19 Апреля, 2016 - 17:23:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




kotyara1979 пишет:
Товары вы добавляете не в ту ветку массива.
"Шапка" заказа пишется в $jsonData[], т.е. создается ветка со следующим числовым индексом. Точно таким же образом работает у вас array_push. Для того, что бы данные записались правильно, нужно передавать в array_push $jsonData[нужный числовой индекс]['contents'].

Спасибо за ответ и наводку! Получилось закинуть в общее дерево. Создал счетчик в начале цикла и подставил его вот так:
array_push($jsonData[$i]["contents"],array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]));
Но не выводится массив который я добавляю.
Можете еще подсказать что не так?
PHP:
скопировать код в буфер обмена
  1.   [0]=>
  2.   array(18) {
  3.     ["orderID"]=>
  4.     string(4) "4767"
  5.     ["orderDescript"]=>
  6.     NULL
  7.     ["contents"]=>
  8.     NULL
  9.   }


Как видите ["contents"]=> NULL Хотя должно быть как-то так:
PHP:
скопировать код в буфер обмена
  1.   [0]=>
  2.   array(18) {
  3.     ["orderID"]=>
  4.     string(4) "4767"
  5.     ["orderDescript"]=>
  6.     NULL
  7.     ["contents"] => array(
  8.     array(
  9.       "productID" => 34,
  10.       "productName" => "Супер товар",
  11.       "quantity" => 1
  12.     ),
  13.     array(
  14.       "productID" => 56,
  15.       "productName" => "Чудо товар",
  16.       "quantity" => 3
  17.     )
  18.   ),
  19.   }

(Добавление)
Получилось таким макаром:
PHP:
скопировать код в буфер обмена
  1. array_push($jsonData[$i]["contents"]["productID"] = $arItems["ID"]);
  2. array_push($jsonData[$i]["contents"]["productName"] = $arItems["NAME"]);
  3. array_push($jsonData[$i]["contents"]["quantity"] = $arItems["QUANTITY"]);


Спасибо.
(Добавление)
Нет, не получилось, так оно цикл не проходит. Всегда записывается последние данные.
 
 Top
Exponat
Отправлено: 20 Апреля, 2016 - 14:31:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Надо было заранее в массиве $jsonData[] огласить как должно выглядеть поле "contents":
PHP:
скопировать код в буфер обмена
  1. $jsonData[]=  array(
  2.   "orderID" => $ar_sales["ID"],
  3.   "dateCreate" => $ar_sales["DATE_INSERT"],
  4.   "contents" => array(),
  5.   "orderDescript" => $ar_sales["USER_DESCRIPTION"],
  6.   );

Теперь мы четко указали как оно должно записаться.
Ну и запись в цикле такого вида:
PHP:
скопировать код в буфер обмена
  1. array_push($jsonData[$i]["contents"],Array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]));
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB