【发布时间】:2013-09-06 19:45:09
【问题描述】:
我有很多作为产品选项的数组(示例如下):
$option_array[] = array(
"name" => "delivery",
"options" => array(
"sat", "sun")
);
$option_array[] = array(
"name" => "colour",
"options" => array(
"red", "blue", "green")
);
$option_array[] = array(
"name" => "size",
"options" => array(
"small", "medium", "large")
);
什么是我想出每个排列作为一个 foreach 循环但相当有效的最佳方式。我需要在数据库中为每个可能的组合输入一个值(在这个例子中应该是 18 个值或 18 次迭代)。如何获得结果排列的数组?
预期输出:
array(18){
[0] => array(3){
"delivery" => "sat",
"colour" => "red",
"size" => "small",
}
[1] => array(3){
"delivery" => "sat",
"colour" => "red",
"size" => "medium",
}
[2] => array(3){
"delivery" => "sat",
"colour" => "red",
"size" => "large",
}
[3] => array(3){
"delivery" => "sat",
"colour" => "blue",
"size" => "small",
}
[4] => array(3){
"delivery" => "sat",
"colour" => "blue",
"size" => "medium",
}
[5] => array(3){
"delivery" => "sat",
"colour" => "blue",
"size" => "large",
}
[6] => array(3){
"delivery" => "sat",
"colour" => "green",
"size" => "small",
}
[7] => array(3){
"delivery" => "sat",
"colour" => "green",
"size" => "medium",
}
[8] => array(3){
"delivery" => "sat",
"colour" => "green",
"size" => "large",
}
[9] => array(3){
"delivery" => "",
"colour" => "red",
"size" => "medium",
} [10] => array(3){
"delivery" => "sun",
"colour" => "red",
"size" => "small",
}
[11] => array(3){
"delivery" => "sun",
"colour" => "red",
"size" => "medium",
}
[12] => array(3){
"delivery" => "sun",
"colour" => "red",
"size" => "large",
}
[13] => array(3){
"delivery" => "sun",
"colour" => "blue",
"size" => "small",
}
[14] => array(3){
"delivery" => "sun",
"colour" => "blue",
"size" => "medium",
}
[15] => array(3){
"delivery" => "sun",
"colour" => "blue",
"size" => "large",
}
[16] => array(3){
"delivery" => "sun",
"colour" => "green",
"size" => "small",
}
[17] => array(3){
"delivery" => "sun",
"colour" => "green",
"size" => "medium",
}
[18] => array(3){
"delivery" => "sun",
"colour" => "green",
"size" => "large",
}
}
我并不太担心输出格式。
【问题讨论】:
-
每一个排列到底是什么?您的数组是多维的。请指定您的预期输出。
-
抱歉,没有把它粘贴进去 - 也不要忘记它,因为它让我烦恼!给我2分钟
-
不完全匹配(输入需要从
name => foo, options => [...]到直接foo => [...]轻微按摩),但它绝对是您所追求的笛卡尔积。 -
超过 3 个维度,我得了自动偏头痛。谢谢你们的帮助。
标签: php arrays multidimensional-array