Для вашего массива:
$items = [
1=>[
'Red',
'Yellow',
'Blue',
'Green',
],
2=>[
28,
30,
32,
34
],
3=>[
'Short Neck',
'Full Neck',
'Round Neck'
],
5=>[
'Bodycon',
'Empire Waist',
'High-Low'
]
];
Это самый простой и менее затратный способ его достижения
$items=array_values($items);
$result=[];
foreach($items[0] as $k1=>$v1){
foreach($items[1] as $k2=>$v2){
foreach($items[2] as $k3=>$v3){
foreach($items[3] as $k4=>$v4){
$result[]=$v1.' '.$v2.' '.$v3.' '.$v4;
}
}
}
}
Для вашего массива, если вы хотите удалить шаг из кода вышевы можете использовать вместо
$result=[];
foreach($items[1] as $k1=>$v1){
foreach($items[2] as $k2=>$v2){
foreach($items[3] as $k3=>$v3){
foreach($items[5] as $k4=>$v4){
$result[]=$v1.' '.$v2.' '.$v3.' '.$v4;
}
}
}
}
Обратите внимание, что мы удаляем шаг array_values
. Эти коды выводят массив из 144 записей, представляющих все комбинации в ожидаемом порядке.