странная работа цикла

276
13 марта 2017, 12:05
$i = 0;
foreach ($orders1 as $item) {
    $data['orders'][$i] = $item;
    if ($item['products_id']) {
        $tmp = explode(',', $item['products_id']);
        $j = 0;
        foreach ($tmp as $item1) {
            $data['orders'][$i]['products_id'][$j] = $item1;
            $this->session->set_userdata('tmp', $data['orders'][$i]['products_id'][$j]);
            $j++;
        }
    }
    $i++;
}

вот, что из себя представляет массив $orders1

Array
(
[0] => Array
    (
        [order_id] => 17
        [user_id] => 111
        [order_fio] => Fedorov Nikolay
        [order_date] => 2017-03-11 09:00:33
        [order_change_status] => 2017-03-11 09:00:33
        [order_status] => 0
        [order_adress] => Fedorov Nikolay,Fedorov Nikolay,Fedorov Nikolay
        [number] => 543
        [products_id] => 11,10
        [discount] => 0
    )
[1] => Array
    (
        [order_id] => 18
        [user_id] => 111
        [order_fio] => Fedorov Nikolay
        [order_date] => 2017-03-11 09:01:13
        [order_change_status] => 2017-03-11 09:01:13
        [order_status] => 0
        [order_adress] => Fedorov Nikolay,Fedorov Nikolay,Fedorov Nikolay
        [number] => 423
        [products_id] => 11,10
        [discount] => 0
    )
[2] => Array
    (
        [order_id] => 19
        [user_id] => 111
        [order_fio] => Fedorov Nikolay
        [order_date] => 2017-03-11 09:02:27
        [order_change_status] => 2017-03-11 09:02:27
        [order_status] => 0
        [order_adress] => Fedorov Nikolay,Fedorov Nikolay,Fedorov Nikolay
        [number] => 432
        [products_id] => 11,10
        [discount] => 0
    )
)

в $this->session->set_userdata выводится первая цифра из строки 11,10. Но я ведь строку разбил на массив из двух чисел. То есть, если я вывожу $item1, то выводится 11, а если $data['orders'][$i]['products_id'][$j], то цифра 1. Хотя строкой выше я сделал их равными

Answer 1

Правильно у Вас $data['orders'][$i]['products_id'] это строка '11,10', $data['orders'][$i]['products_id'][$j] - это первый элемент строки '1' который вы хотите приравнять строке.

    $i = 0;
foreach ($orders1 as $item) {
    $data['orders'][$i] = $item;
    if ($item['products_id']) {
        $tmp = explode(',', $item['products_id']); // результата [11, 10]
        $j = 0;
        foreach ($tmp as $item1) {
            $data['orders'][$i]['products_id'][$j] = $item1; // 1 = 11 - так не работает, если вы хотите сделать products_id то надо убрать  [$j], а  если хотите создать новый  массив айдишников, то надо записать $data['orders'][$i]['products_ids'][] =  !!!
            ...
        }
    }
    $i++;
}

Вообще подразумеваю, что вы ходите создать в каждом массиве свой массив айдишников.

foreach ($orders1 as $item) {
    $data['orders'][$i] = $item;
    if ($item['products_id']) {
        $tmp = explode(',', $item['products_id']);
        $j = 0;
        $data['orders'][$i]['products_ids'] = [];
        foreach ($tmp as $item1) {
            $data['orders'][$i]['products_ids'][] = $item1;

            //$this->session->set_userdata('tmp', $item1);
            $j++;
        }
    }
    $i++;
}

Результат:

READ ALSO
Как упростить код PHP?

Как упростить код PHP?

Сдается, что есть более простой способ выводаСпасибо

289
Проблема с curl vk.com

Проблема с curl vk.com

При попытке сделать GET запрос к VKcom для поиска определенной композиции

330
Не могу подключить MySql

Не могу подключить MySql

Здравствуйте, я не давно сменил хостинг для сайта и у меня перестала подключатся база данных и на страницу не выводит никакой ошибки, а на предыдущем...

359
Массив с данными пользователя в сессии PHP MVC

Массив с данными пользователя в сессии PHP MVC

Подскажите, где создать объект пользователя, чтобы данные были доступны во всех роутахДелаю сайт, в основе которого MVC-каркас, c единой точкой...

317