php - 基于产品变化数组创建规则数组
我有这个产品变化数组。
array:3 [
0 => array:2 [
0 => "2_12"
1 => "4_9"
]
1 => array:2 [
0 => "2_3"
1 => "4_9"
]
2 => array:2 [
0 => "2_4"
1 => "4_10"
]
]
我需要从这个数组中创建一些规则
每个数组都包含一个产品变化,每个元素都是由option_value组成。
例:第一个数组。[2_12, 4_9] => [color_purple, material_cotton] 。
我想在这个数组的基础上再创建一个数组,包含每个元素组合。
例:我想看看color_purple(2_12)是用什么材料组合的,material_cotton是用什么颜色组合的...等等。
像这样。
array:5 [
"2_12" => array:1 [
0 => "4_9"
]
"2_3" => array:1 [
0 => "4_9"
]
"2_4" => array:1 [
0 => "4_10"
]
"4_9" => array:2 [
0 => "2_12"
1 => "2_3"
]
"4_10" => array:1 [
0 => "2_4"
]
]
如何根据产品的变化数组 把最后一个数组装箱?
【回答】:
我创建了这个数组......可能不是最好的解决方案......但是可以用。
如果你有更好的方法......就把它贴出来:)
基于变化数组。
$rules = array();
foreach ($variations as $variation) {
foreach ($variation as $index => $v) {
$nextIndex = ++$index;
if(!isset($rules[$v])){
$rules[$v] = array();
if(isset($variation[$nextIndex])){
array_push($rules[$v],$variation[$nextIndex]);
}
} else {
if(isset($variation[$nextIndex])){
array_push($rules[$v],$variation[$nextIndex]);
}
}
}
$variation = array_reverse($variation);
foreach ($variation as $index => $v) {
$nextIndex = ++$index;
if(isset($variation[$nextIndex])){
array_push($rules[$v],$variation[$nextIndex]);
}
}
}
和规则数组是这样的:
array:5 [
"2_12" => array:1 [
0 => "4_9"
]
"4_9" => array:2 [
0 => "2_12"
1 => "2_3"
]
"2_3" => array:1 [
0 => "4_9"
]
"2_4" => array:1 [
0 => "4_10"
]
"4_10" => array:1 [
0 => "2_4"
]
]