За последние 24 часа нас посетили 36634 программиста и 1710 роботов. Сейчас ищут 869 программистов ...

Помогите с array_push

Тема в разделе "PHP для новичков", создана пользователем Serg87, 20 апр 2016.

  1. Serg87

    Serg87 Новичок

    С нами с:
    20 апр 2016
    Сообщения:
    2
    Симпатии:
    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[$i]["contents"],array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]));
    4.   }
    Результат выводит таким:
    PHP:
    1.  [0]=>
    2.   array(18) {
    3.     ["orderID"]=>
    4.     string(4) "4767"
    5.     ["orderDescript"]=>
    6.     NULL
    7.     ["contents"]=>
    8.     NULL
    9.   }
    А нужно чтоб было таким как указывал выше. Проблема именно с "contents".
    Что не так делаю?

    Спасибо.
     
  2. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    PHP:
    1.  $jsonData[]=  array(
    Вы уверены, что нужно именно в подмассив ?
    Может лучше ?
    PHP:
    1.  $jsonData = array(
    PHP:
    1. array_push($jsonData[$i]["contents"]
    Откуда $i и что она в себе несёт ?

    PHP:
    1. $jsonData = array(
    2.     "orderID" => $ar_sales["ID"],
    3.     "dateCreate" => $ar_sales["DATE_INSERT"],
    4.     "orderDescript" => $ar_sales["USER_DESCRIPTION"]
    5. );
    6.  
    7. $dbBasketItems = CSaleBasket::GetList(запрос);
    8. while ($arItems = $dbBasketItems->Fetch()){
    9.     $jsonData["contents"][] = array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]);
    10. }
     
  3. Serg87

    Serg87 Новичок

    С нами с:
    20 апр 2016
    Сообщения:
    2
    Симпатии:
    0
    Думаю да, потому что оно все в цикле. И нужно чтоб каждая итерация была со своим числовым индексом массива.

    Это переменная счетчик. Таким способом я синхронизирую в какой числовой индекс главного массива вставлять "contents".

    Если сделать
    PHP:
    1. $jsonData = array(
    и прописать такую конструкцию
    PHP:
    1. $jsonData["contents"][] = array("productID" => $arItems["ID"], "productName" => $arItems["NAME"], "quantity" => $arItems["QUANTITY"]);
    то выйдет такое:
    PHP:
    1. ["orderDescript"]=>
    2.   NULL
    3.   ["contents"]=>
    4.   array(4) {
    5.     [0]=>
    6.     NULL
    7.     [1]=>
    8.     NULL
    9.     [2]=>
    10.     NULL
    11.     [3]=>
    12.     NULL
    13.   }
    --- Добавлено ---
    Друзья, получилось так. Предварительно в массиве надо было огласить имя :
    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.   );
    Теперь мы четко указали что там должно быть и как оно должно записаться.