首页 > 解决方案 > 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 循环等来完成。

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

标签: php

解决方案


你的代码有一些问题。首先,您有多个具有相同名称的键:'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
)

推荐阅读