PHP Array计算出所有可能的选项

时间:2017-11-10 12:54:50

标签: php arrays sorting

我目前正在为我使用的CMS开发一个开源电子商务系统。我目前正致力于产品变化。我在计算变体的每个可能选项时遇到问题。

阵列目前是这样的:

Array
(
    [Size] => Array
        (
            [0] => Small
            [1] => Medium
            [2] => Large
        )

    [Colour] => Array
        (
            [0] => Blue
            [1] => Red
            [2] => Green
        )

)

我希望它返回这样的内容:

Array
(
    [0] => Size=Small, Colour=Blue
    [1] => Size=Small, Colour=Red
    [2] => Size=Small, Colour=Green
    [3] => Size=Medium, Colour=Blue
    [4] => Size=Medium, Colour=Red
    [5] => Size=Medium, Colour=Green
    [6] => Size=Large, Colour=Blue
    [6] => Size=Large, Colour=Red
    [8] => Size=Large, Colour=Green
)

我尝试了一些方法,但它开始绞尽脑汁。这也应该是可扩展的,例如Size=Large, Colour=Red, Material=Fabric

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  <?php

$array=array
(
    'size' => Array
    (
        'Small',
        'Medium',
        'Large'
        ),

    'Color' => Array
(
  'Blue','Red','Green'
        )

);
$arrayFirstKey=(array_keys($array)[0]);
$arraySecondKey=(array_keys($array)[1]);

$i=0;
$newArray=array();
foreach($array[$arrayFirstKey] as $size){
     foreach($array[$arraySecondKey]  as $color) {
    $newArray[] = $arrayFirstKey.'=' . $size .','. $arraySecondKey.'=' . $color;
    $i++;
    }
}
echo "<pre>";
print_r($newArray);

输出是:

    Array
(
    [0] => size=Small, Colour=Blue
    [1] => size=Small, Colour=Red
    [2] => size=Small, Colour=Green
    [3] => size=Medium, Colour=Blue
    [4] => size=Medium, Colour=Red
    [5] => size=Medium, Colour=Green
    [6] => size=Large, Colour=Blue
    [7] => size=Large, Colour=Red
    [8] => size=Large, Colour=Green
)

编辑:

它创造了关键价值动态。我提供了您在注释中设置的示例的输出。唯一改变的是从代码功能中添加新值的数组。

Array
(
    [0] => year=1992,Type=Champaign
    [1] => year=1992,Type=Wine
    [2] => year=1993,Type=Champaign
    [3] => year=1993,Type=Wine
)