【发布时间】:2020-12-27 10:26:12
【问题描述】:
我正在尝试从下面的列表中创建组合,但我不确定如何解析结果,因为结果每次都会动态变化。
这是我通过表单收到的result,
{"1":["Medium"],"2":["White","Blue"]}
我如何解析上述结果以获得可能的组合(例如下面)。
product_combination
-------------------
Medium-White
Medium-Blue
....
....
Medium
Medium-White-Large
我正在使用 Laravel,我稍后会将数据存储在数据库中以供参考
如果您能解释一下如何处理此类数据,我将不胜感激。
编辑: 我想出了一个替代方案
$input = json_decode('{"1":["Medium", "Large"],"2":["White", "Blue"]}', true);
$result = array();
foreach ($input as $array) {
$result = array_merge($result, $array);
}
print_r(collect($result)->crossJoin(collect($result)));
以上代码结果如下
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => Array
(
[0] => Medium
[1] => Medium
)
[1] => Array
(
[0] => Medium
[1] => White
)
[2] => Array
(
[0] => Medium
[1] => Blue
)
[3] => Array
(
[0] => White
[1] => Medium
)
[4] => Array
(
[0] => White
[1] => White
)
[5] => Array
(
[0] => White
[1] => Blue
)
[6] => Array
(
[0] => Blue
[1] => Medium
)
[7] => Array
(
[0] => Blue
[1] => White
)
[8] => Array
(
[0] => Blue
[1] => Blue
)
)
)
在这种情况下,数组是自动填充的,但结果比 PaulH 先生的方法长
【问题讨论】:
-
请说明 Medium 和 Medium-White-Large 的来源
-
我想根据我得到的上述响应创建可能的组合。 Medium 和 Medium-White-Large 供参考。我希望以上述所需方式创建结果。
-
我知道这一点。但是我不能将数据作为对象传递给交叉连接进行处理。我需要帮助
标签: php arrays json laravel laravel-5