Php 基于产品变体数组创建规则数组
我有这个产品变体阵列:Php 基于产品变体数组创建规则数组,php,arrays,Php,Arrays,我有这个产品变体阵列: 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" ] ] $rules = array(); foreach ($variati
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"
]
]
$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]);
}
}
}
需要从中创建一些规则
每个数组包含一个产品变量,每个元素由选项_值组成
例如:第一个数组:[2_12,4_9]=>[颜色为紫色,材质为棉花]
我想创建另一个数组,其中包含基于该数组的每个元素组合
例:我想看看紫色和什么材料相结合,棉花和什么颜色相结合……等等
像这样:
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"
]
]
如何根据product variations阵列装箱最后一个阵列?我创建了阵列。。。。。可能不是最好的解决方案…但很有效 如果你有更好的方法。。。。只需发布: 基于变体数组:
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"
]
]
$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"
]
]
我想我会第一次尝试在原始循环上编写foreach循环array@RiggsFolly我发布了一个可能的答案。。。就像我说的,这不是最好的。你有更好的解决办法吗?