У меня довольно сложный набор данных, доступный в массиве, в частности разные варианты для одного продукта.
В этом примере продукт представляет собой кабель и доступен разной длины и разных цветов, поэтому вы можете получить желтый кабель длиной 1 м, а также зеленый кабель 1 м и т.д. Я хочу, чтобы иметь возможность перечислять эти параметры в аккордеонах, но группировать их по длине, поэтому, если клиенту нужен желтый кабель длиной 2 м, они нажимают на аккордеон "2 м" и выбирают желтый изнутри аккордеона.
Вот пример одной записи в массиве:
[3775] => Array
(
[id] => 3775
[product_id] => 4928
[active] => 0
[var] => 37:63
[price] => 0.0000
[opts] => Array
(
[37] => 0.3m
[38] => 0.5m
[39] => 1.0m
[40] => 1.5m
[41] => 2.0m
[42] => 3.0m
[43] => 4.0m
[44] => 5.0m
[45] => 6.0m
[46] => 7.0m
[47] => 8.0m
[48] => 10.0m
[49] => 15.0m
[50] => 20.0m
[51] => 25.0m
[52] => 30.0m
[53] => 50.0m
[59] => Grey
[63] => Red
[58] => Green
[55] => Blue
[65] => Yellow
[54] => Black
[62] => Purple
[64] => White
[60] => Orange
[61] => Pink
[56] => Brown
)
)
Клавиша [var] представляет два идентификатора массива [opts], поэтому 37:63 относится к 0,3 миллионам красных.
Остальная часть массива выглядит точно так же (в том смысле, что массив opt остается тем же), но var, combi и ID будут меняться.
Есть ли простой способ группировать эти параметры по длине и затем перечислять каждый доступный цвет под ним?
Заранее спасибо.
Использовать array_filter в массиве параметров
Функция обратного вызова должна принимать строку в качестве аргумента и возвращать значение true, если строка начинается с числа. Вы можете использовать preg_match для этого