【问题标题】:Recursive function to iterate through t-shirt variants迭代 T 恤变体的递归函数
【发布时间】:2016-08-10 07:21:59
【问题描述】:

question 之后,我需要将它放入一个函数中(可能是递归的),以便我传入数组变体并返回一个包含所有变体的数组。

我有一个包含不同 T 恤款式的数组,如下所示:

颜色:黑色、红色、蓝色

尺码:L、M、XL

...

变体可能会有所不同,包括更多尺寸、颜色或新变体,例如组织变体。

我需要一个函数,它返回一个包含所有迭代变体的数组,如下所示:

0 颜色=>黑色尺码=>L

1 颜色=>黑色尺码=>M

2 颜色=>黑色 XL 码

3 色=>红色尺码=>L

4色=>红色尺码=>M

..

我无法绕过构建这个最终数组。任何帮助表示赞赏!

【问题讨论】:

  • 这些数组是在数组中还是单独的数组?

标签: php recursion


【解决方案1】:

您正在寻找Mathematical induction。要回答您的第一个问题,您需要这样的东西,混合搭配以满足您的需求:

function induction($arrays, $i = 0)
{
    if( ! isset($arrays[$i]))
    {
        return [];
    }
    if($i == count($arrays) - 1)
    {
        return $arrays[$i];
    }

    $temporaryCombination = induction($arrays, $i + 1);

    $result = [];

    foreach ($arrays[$i] as $value)
    {
        foreach ($temporaryCombination as $combination)
        {
            $result[] = is_array($combination)
                ? array_merge([$value], $combination) : [
                    $value,
                    $combination,
                ];
        }
    }

    return $result;
}

var_dump(induction([$color,$size,$material]));

巧不巧,回答你第一个,我也回答了这个问题,上面的功能只需要稍微调整一下。

【讨论】:

    【解决方案2】:

    类似的东西应该可以工作:

    $inventory = array();
    
    foreach($colors as $color){
        foreach($sizes as $size){
            $inventory[] = array(
                'Color' => $color,
                'Size' => $size,
            ),
        }
    }
    

    【讨论】:

      【解决方案3】:

      首先循环遍历主数组说$array,然后随着循环的迭代,您将获得包含颜色和大小的数组。然后,您可以使用相应的键/索引(即['Color']['Size'])检索衬衫的颜色和尺寸,并将它们推送到单独的新数组$colors$sizearray_unique() 删除数组中的重复元素。

      $colors=[];
      $sizes=[];    
      foreach($array as $arr){
          $colors[]=$arr['Color'];
          $sizes[]=$arr['Size'];
      }
      $colors=array_unique($colors)
      $sizes=array_unique($sizes)
      

      【讨论】:

        猜你喜欢
        • 2019-03-01
        • 2011-11-30
        • 2019-04-03
        • 2016-03-01
        • 2021-12-31
        • 2018-09-03
        • 2016-04-07
        • 2012-10-17
        • 2021-12-09
        相关资源
        最近更新 更多