2019-07-20
<h1>sku规格信息构造</h1>
<p>需要构造的参数</p>
<pre><code class="language-php"> [
{
"spec_name": "颜色", //规格名称
"spec_value": [ //规格值,数组格式
"黑色",
"白色"
]
},
{
"spec_name": "尺寸",
"spec_value": [
"XL",
"L"
]
},
]</code></pre>
<p>笛卡儿积方式构造</p>
<pre><code class="language-php">public function combineSkuSpecs($specInfo)
{
$count = count($specInfo) - 1;
$result = [];
if ($count == 0) {
foreach ($specInfo[0]['spec_value'] as $specValue) {
$result[] = [[
'spec_name' => $specInfo[0]['spec_name'],
'spec_value' => $specValue
]];
}
} else {
for ($i = 0; $i < $count; $i++) {
$tmp = [];
if ($i == 0) {
$result = array_unique($specInfo[$i]['spec_value']);
}
foreach ($result as $first) {
foreach (array_unique($specInfo[$i + 1]['spec_value']) as $second) {
if (is_array($first)) {
$tmp[] = array_merge($first, [
[
'spec_name' => $specInfo[$i + 1]['spec_name'],
'spec_value' => $second
]
]);
} else {
$tmp[] = [
[
'spec_name' => $specInfo[$i]['spec_name'],
'spec_value' => $first
], [
'spec_name' => $specInfo[$i + 1]['spec_name'],
'spec_value' => $second
]
];
}
}
}
$result = $tmp;
}
}
return $result;
}</code></pre>
<p>构造结果</p>
<pre><code class="language-php">[
{
"spec"=>[ //库存规格信息
{
"spec_name":"颜色",
"spec_value":"黑色"
},
{
"spec_name":"尺寸",
"spec_value":"XL"
}
]
},
{
"spec"=>[
{
"spec_name":"颜色",
"spec_value":"黑色"
},
{
"spec_name":"尺寸",
"spec_value":"L"
}
]
},
{
"spec"=>[
{
"spec_name":"颜色",
"spec_value":"白色"
},
{
"spec_name":"尺寸",
"spec_value":"XL"
}
]
},
{
"spec"=>[
{
"spec_name":"颜色",
"spec_value":"白色"
},
{
"spec_name":"尺寸",
"spec_value":"L"
}
]
}
]</code></pre>