Есть две разные cookie:
Cart
содержит ID товара и количество этого товара в заказе. Пример:
{"227":2,"235":1,"242":1,"243":3}
cart_info
содержит ID товара и размеры этого товара в заказе. В вышеуказанном примере:
{"227":["XL","4XL"],"235":["3XL"],"242":["L"],"243":["M","L","XL"]}
Функция обработки cart
:
$items = (array)json_decode(stripslashes(@$_COOKIE['cart']), true);
$products = $this->model->product->getByIds(array_keys($items));
$orders2 = array();
foreach ($products as $product) {
$count = array_key_exists($product->id, $items) ? $items[$product->id] : 1;
$count = preg_match('@^[0-9]+$@i', $count) ? $count : 1;
$orders2[] = $product->name . ' (' . $count . ' шт);';
}
Результат: Товар227 (2 шт); Товар235 (1 шт); Товар242 (1 шт); Товар243 (3 шт);
Функция обработки cart_info
:
$items_info = (array)json_decode(stripslashes(@$_COOKIE['cart_info']), true);
$message_info = "";
foreach ($items_info as $key => $val) {
$message_info .= $this->model->product->getById($key)->name . ": " . implode(',', array_unique($val)) . " // ";
}
Результат:Товар227: XL,4XL // Товар235: 3XL // Товар242: L // Товар243: M,L,XL //
Помогите написать третью функцию, которая объединит данные и даст результат вида:
Товар227 (2 шт): XL,4XL // Товар235 (1 шт): 3XL // Товар242 (1 шт): L // Товар243 (3 шт): M,L,XL //
Как вариант, вы можете в функции обработки cart_info
собирать информацию в массив, а вывод делать через implode(string, delimiter)
, где в качестве индекса массива писать $this->model->product->getById($key)->id
, то есть будет:
$cartInfo[$this->model->product->getById($key)->id] = $this->model->product->getById($key)->name . ": " . implode(',', array_unique($val));
В функции 1 сделать аналогично - индекс массива = ид товара.
$orders2[$product->id] = $product->name . ' (' . $count . ' шт);';
И в конце что-то типо:
foreach($orders2 as $productId => $order){
echo $order.':'.$cartInfo[$productId];
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с проблемой постоянного изменения вывода массива, мой массив
Как переделать данный пример используя hasMany() вместо hasOne() для отображения в ячейке GridView нескольких связанных данных из другой таблицы?