PHP从组合列表中创建一个变化表

时间:2019-11-25 13:55:33

标签: php

为模糊的标题表示歉意,我不确定您怎么称呼这个难题。

我在两个表中都有一个属性和变体列表。变体属于属性。 例如:

Attributes = Size and Length
Variations = 
  Size.Small, Size.Medium, Size.Large,
  Length.Short, Length.Regular, Length.Long

因此,SQL搜索可能会返回类似的内容

'Attribute' => array(
    'title' => 'Size',
    'Variation' => array(
        'title' => 'Small',
        'title' => 'Medium',
        'title' => 'Large',
    ),
    'title' => 'Length',
    'Variation' => array(
        'title' => 'Short',
        'title' => 'Regular',
        'title' => 'Long',
    ),
)

我试图做的是将其呈现给浏览器,如下所示:

Small : Short
Small : Regular
Small : Long
Medium : Short
Medium : Regular
Medium : Long
Large : Short
Large : Regular
Large : Long

请记住,数据可能不仅限于两个属性,而可能是多个。与此类似。

是否有一种巧妙的方法可以使用PHP中的数组操作命令来执行此操作,还是应该使用foreach循环等来完成此操作?

我怀疑这可能不是解决此类问题的合适论坛,但是如果有人能指出正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的代码有一些问题。首先,您有多个具有相同名称的键:'title' => 'Short', 'title' => 'Regular'。如果这样设置,由于数组不能有重复的键,最终将丢失数据。另外,请考虑使用短数组语法$arr = [];而不是$arr = array()。就是说,这里是您可以使用的工作代码:https://3v4l.org/EIUEQ。 输出为(具有三个演示属性):

Array
(
    [0] => Small Short Black
    [1] => Small Short White
    [2] => Small Regular Black
    [3] => Small Regular White
    [4] => Small Long Black
    [5] => Small Long White
    [6] => Medium Short Black
    [7] => Medium Short White
    [8] => Medium Regular Black
    [9] => Medium Regular White
    [10] => Medium Long Black
    [11] => Medium Long White
    [12] => Large Short Black
    [13] => Large Short White
    [14] => Large Regular Black
    [15] => Large Regular White
    [16] => Large Long Black
    [17] => Large Long White
)