php - 根据选项生成产品组合
问题描述
我正在尝试基于 2 种或更多类型的选项生成产品组合系统,其中最终数组应如下例所示。我对此有点陌生,我不知道该怎么做。它们的数组键应该从 1000 开始并从那里递增。数组的第一部分包含有关选项的信息,例如 option_id 名称等,第二部分包含 product_option_value 中产品的某些部分。任何建议或帮助都会有所帮助,因为我没有想法,这非常令人沮丧。
给定一系列选项
Array
(
[0] => Array
(
[option_id] => 19
[name] => Colors
)
[1] => Array
(
[option_id] => 16
[name] => Fabric
)
[2] => Array
(
[option_id] => 12
[name] => Size
)
)
我的产品基于颜色排列
Array
(
[0] => Array
(
[product_id] => 54
[model] => 01035
[sku] => 050102/bs
)
[1] => Array
(
[product_id] => 57
[model] => 01038
[sku] => 050104/b
)
[2] => Array
(
[product_id] => 58
[model] => 01039
[sku] => 050106/C
)
)
stdClass Object
(
[10010] => stdClass Object
(
[product_option_id] =>
[name] => option_name_1
[value] => option_name_1-option_name_2-option_name_3:::0
[product_option_value] => stdClass Object
(
[12] => stdClass Object
(
[option_value_id] => 849
[product_option_value_id] =>
[model] => repellendus nemo ve-050102/bs
)
[15] => stdClass Object
(
[option_value_id] => 861
[product_option_value_id] =>
[model] => repellendus nemo ve-050104/b
)
)
)
[10011] => stdClass Object
(
[product_option_id] =>
[name] => option_name_1-option_name_2-option_name_3
[value] => option_name_1-option_name_2-option_name_3:::0-849
[product_option_value] => stdClass Object
(
[13] => stdClass Object
(
[option_value_id] => 2407
[product_option_value_id] =>
[model] => repellendus nemo ve-050102/bs-050102/bs
)
)
)
[10012] => stdClass Object
(
[product_option_id] =>
[name] => option_name_1-option_name_2-option_name_3
[value] => option_name_1-option_name_2:::0-849-2407
[product_option_value] => stdClass Object
(
[14] => stdClass Object
(
[option_value_id] => 2884
[product_option_value_id] =>
[model] => repellendus nemo ve-050102/bs-050102/bs-050102/bs
)
)
)
[10013] => stdClass Object
(
[product_option_id] =>
[name] => option_name_1-option_name_2
[value] => option_name_1-option_name_2:::0-861
[product_option_value] => stdClass Object
(
[16] => stdClass Object
(
[option_value_id] => 2407
[product_option_value_id] =>
[model] => repellendus nemo ve-050104/b-050102/bs
)
)
)
[10014] => stdClass Object
(
[product_option_id] =>
[name] => option_name_1-option_name_2-option_name_3
[value] => option_name_1-option_name_2-option_name_3:::0-861-2407
[product_option_value] => stdClass Object
(
[17] => stdClass Object
(
[option_value_id] => 2884
[model] => repellendus nemo ve-050104/b-050102/bs-050102/bs
)
)
)
)
目前,我已经设法构建了“包含基本产品的第一个数组”,但它没有与选项名称连接的名称
$something = function ($cell, $optionName) {
$cOption = $this->getOptionByName($optionName, $cell);
return [
"product_option_id" => "",
'option_value_id' => 0,
'option_val_id' => $cOption['option_value_id'],
"name" => $cOption['name'],
"value" => $cOption['name'],
"option_id" => $cOption['option_id'],
"required" => 0,
"swatch_image" => 0,
"show_first_option_in_list" => "1",
"product_option_value" => []
];
};
$products = [];
$baseProduct = [];
$i = 1000;
for ($c = 4; $c <= 7; $c++) {
if (!empty($cell[$c])) {
$baseProduct = $another($cell[$c], 'Related Colors');
$baseProduct['name'] = $baseProduct['name'] . ':::0';
$baseProduct['value'] = $baseProduct['value'] . ':::0';
$product = $this->getProductBySku($cell[$c]);
$relatedColors[] = $product;
}
}
$baseProduct['product_option_value'] = $relatedColors;
$products[$i++] = $baseProduct;
这是一个视觉表示,如果阵列构建正确,正面应该如何显示。 最终结果
解决方案
推荐阅读
- android - 使用 Angular 和 Android Studio 的混合移动应用程序
- c# - 网页从 Xamarin App 中的 webview 中弹出
- html - 从 PrimeNG 中的 tabView 中删除边框
- javascript - 从网站调用事件 - 使用 VBA 到 Internet Explorer
- c# - 绑定到 ReactiveUserControl.ViewModel 不会设置 ViewModel
- dart - Dart - 我如何将字符串和整数映射在一起?
- typescript - 有没有办法在不使用数组文字类型表示法的情况下声明一个元组?
- apache-spark - 无法在 Windows 中启动闪亮的 shell
- minitest - 如何模拟参数传递给方法+ minitest
- python - python is instance() - 如何使用内置类以外的类使其值得