Многомерный массив, $_SESSION и вывод foreach

288
16 марта 2017, 23:35

Здравствуйте, подскажите, пожалуйста. Заполняю массив следующим образом и записываю его в переменную $_SESSION:

for ($i=1; $i<=$cnt; $i++) {
$ins1['name'] = $modx->db->escape($_REQUEST['item_name_'.$i]);
$ins1['count'] = intval($_REQUEST['item_quantity_'.$i]);
$ins1['size'] = $modx->db->escape($phi['size']);
$ins1['articul'] = $modx->db->escape($phi['articul']);
$ins1['price'] = $modx->db->escape($_REQUEST['item_price_'.$i]);

$itemAr['item_'.$i] = array (
                "name" => $ins1['name'],
                "item id" => $ins1['articul'],
                "size" => $ins1['size'],
                "price" => $ins1['price'],
                "count" => $ins1['count']
            );
 }
for ($i=1; $i<=$cnt; $i++) {
        $_SESSION['item_info'] = $itemAr['item_'.$i];
}

Вывожу следующим образом:

    <?php
session_start();
     echo "<pre>";
    foreach ($_SESSION['item_info'] as $item => $itemAr) {
        foreach($itemAr as $attr => $value) {
    echo "[$item][$attr] = [$value]";
        }
}
    echo "</br>";
    print_r($_SESSION['userid']);
    echo "</br>";
    print_r($_SESSION['orderId']);
     echo "</pre>";
?>

Выводит ошибку:

Error : Invalid argument supplied for foreach()

Понимаю, что где-то не так построила цикл, но не совсем понимаю как поправить. Пробовала по разному. Помогите, пожалуйста, поправить цикл или указать на ошибки, если где допустила.

Answer 1

У вас во втором цикле перезаписывается значение.

Можно не много упростить код.

<?php
//Запись в сессию
session_start();
$cnt = 20;
$result = array();
for ($i=1; $i<=$cnt; $i++) {
    $result[] = array (
        "name" => $modx->db->escape($_REQUEST['item_name_'.$i]),
        "item id" => intval($_REQUEST['item_quantity_'.$i]),
        "size" => $modx->db->escape($phi['size']),
        "price" => $modx->db->escape($phi['articul']),
        "count" => $modx->db->escape($_REQUEST['item_price_'.$i])
        );
}
$_SESSION['item_info'] = $result;
?>

<?php
//Чтение
session_start();
echo "<pre>";
foreach ($_SESSION['item_info'] as $item => $itemAr) {
    foreach($itemAr as $attr => $value) {
        echo "[$item][$attr] = [$value]\n";
    }
}
echo "</br>";
print_r($_SESSION['userid']);
echo "</br>";
print_r($_SESSION['orderId']);
echo "</pre>";  
READ ALSO
Разница в датах [дубликат]

Разница в датах [дубликат]

На данный вопрос уже ответили:

311
Получить выборочные столбцы из БД

Получить выборочные столбцы из БД

Пример: есть таблица (на картинке)Как сделать так, чтобы изменяя option_id, option_value оставался такой, какой был установлен изначально (т

242
Кэширование изображений на сайте, PHP

Кэширование изображений на сайте, PHP

ЗдравствуйтеПроблема вот в чём: есть страница пользователя

283
Как найти устройства и подключиться к ним с помощью Bluetoth Low Energy

Как найти устройства и подключиться к ним с помощью Bluetoth Low Energy

Я работаю с Bluetooth Low Energy и не знаю как организовать поиск устройств (сканирования)И как подключиться к ним

267