php-框架 - PHP数组遍历 sku属性值配对
程序员文章站
2022-06-13 20:38:47
...
$skuattr = Array
(
'7' => Array
(
'6' => '22x33',
'9' => '44x55',
),
'8' => Array
(
'12' => '大小号'
),
'9' => Array
(
'8' => '金属质',
'13' => '塑料',
),
'16' => Array
(
'14' => '圆形'
)
);
得到4个值
7:6;8:12;9:8;16:14;
7:9;8:12;9:8;16:14
7:6;8:12;9:13;16:14
7:9;8:12;9:13;16:14
因为键值是动态的,所以需要一个数组遍历的算法,得到结果,大神求助
回复内容:
$skuattr = Array
(
'7' => Array
(
'6' => '22x33',
'9' => '44x55',
),
'8' => Array
(
'12' => '大小号'
),
'9' => Array
(
'8' => '金属质',
'13' => '塑料',
),
'16' => Array
(
'14' => '圆形'
)
);
得到4个值
7:6;8:12;9:8;16:14;
7:9;8:12;9:8;16:14
7:6;8:12;9:13;16:14
7:9;8:12;9:13;16:14
因为键值是动态的,所以需要一个数组遍历的算法,得到结果,大神求助
原理就是要求笛卡尔积,写了一个简单的例子
php
function combineDika($data) { $result = array(); foreach (array_shift($data) as $k=>$item) { $result[] = array($k=>$item); } foreach ($data as $k => $v) { $result2 = []; foreach ($result as $k1=>$item1) { foreach ($v as $k2=>$item2) { $temp = $item1; $temp[$k2] = $item2; $result2[] = $temp; } } $result = $result2; } return $result; } $skuattr = Array ( '7' => Array ( '6' => '22x33', '9' => '44x55', ), '8' => Array ( '12' => '大小号' ), '9' => Array ( '8' => '金属质', '13' => '塑料', ), '16' => Array ( '14' => '圆形' ) ); $a = combineDika($skuattr); print_r($a);
php
Array ( [0] => Array ( [6] => 22x33 [12] => 大小号 [8] => 金属质 [14] => 圆形 ) [1] => Array ( [6] => 22x33 [12] => 大小号 [13] => 塑料 [14] => 圆形 ) [2] => Array ( [9] => 44x55 [12] => 大小号 [8] => 金属质 [14] => 圆形 ) [3] => Array ( [9] => 44x55 [12] => 大小号 [13] => 塑料 [14] => 圆形 ) )
上一篇: LevelDB系列之Log文件