原資料
[{
"name": "顏色",
"attr_values": "白色,黑色"
}, {
"name": "記憶體",
"attr_values": "64G,128G"
}, {
"name": "型號",
"attr_values": "X,pro"
}]
目標資料
[{
"price": "0",
"記憶體": "64G",
"型號": "X",
"顏色": "白色"
}, {
"price": "0",
"記憶體": "64G",
"型號": "pro",
"顏色": "白色"
}, {
"price": "0",
"記憶體": "128G",
"型號": "X",
"顏色": "白色"
}, {
"price": "0",
"記憶體": "128G",
"型號": "pro",
"顏色": "白色"
}, {
"price": "0",
"記憶體": "64G",
"型號": "X",
"顏色": "黑色"
}, {
"price": "0",
"記憶體": "64G",
"型號": "pro",
"顏色": "黑色"
}, {
"price": "0",
"記憶體": "128G",
"型號": "X",
"顏色": "黑色"
}, {
"price": "0",
"記憶體": "128G",
"型號": "pro",
"顏色": "黑色"
}]
程式碼
<?php
function setAttr(array $attr_group, int $index = 0, array $keys = [], array $attrs = [])
{
static $row = 0;
if ($index == 0) {
foreach($attr_group as $i) {
$keys[] = 0;
}
}
if (isset($attr_group[$index])) {
$attr_values = explode(',', $attr_group[$index]['attr_values']);
foreach($attr_values as $key => $attr_value) {
$keys[$index] = $key;
if ($index + 1 == count($attr_group)) {
foreach($keys as $i => $item) {
$attrs[$row][$attr_group[$i]['name']] = explode(',', $attr_group[$i]['attr_values'])[$item];
}
$attrs[$row]['price'] = '0';
$row++;
} else {
$attrs = setAttr($attr_group, $index + 1, $keys, $attrs);
}
}
}
return $attrs;
}
$attr_group = [
[
'name' => '顏色',
'attr_values' => '白色,紅色'
],
[
'name' => '記憶體',
'attr_values' => '64G,128'
]
];
$attrs = setAttr($attr_group);
var_dump($attrs);
?>
本作品採用《CC 協議》,轉載必須註明作者和本文連結