9阅网

您现在的位置是:首页 > 知识 > 正文

知识

php - 基于产品变化数组创建规则数组

admin2022-11-07知识18

我有这个产品变化数组。

array:3 [
  0 => array:2 [
    0 => "2_12"
    1 => "4_9"
  ]
  1 => array:2 [
    0 => "2_3"
    1 => "4_9"
  ]
  2 => array:2 [
    0 => "2_4"
    1 => "4_10"
  ]
]

我需要从这个数组中创建一些规则

每个数组都包含一个产品变化,每个元素都是由option_value组成。

例:第一个数组。[2_12, 4_9] => [color_purple, material_cotton] 。

我想在这个数组的基础上再创建一个数组,包含每个元素组合。

例:我想看看color_purple(2_12)是用什么材料组合的,material_cotton是用什么颜色组合的...等等。

像这样。

array:5 [
  "2_12" => array:1 [
    0 => "4_9"    
  ]
  "2_3" => array:1 [   
    0 => "4_9"
  ]
  "2_4" => array:1 [    
    0 => "4_10"
  ]
  "4_9" => array:2 [    
    0 => "2_12"
    1 => "2_3"
  ]
  "4_10" => array:1 [    
    0 => "2_4"
  ]
]

如何根据产品的变化数组 把最后一个数组装箱?



【回答】:

我创建了这个数组......可能不是最好的解决方案......但是可以用。

如果你有更好的方法......就把它贴出来:)

基于变化数组。

    $rules = array();
    foreach ($variations as $variation) {
        foreach ($variation as $index => $v) {
            $nextIndex = ++$index;
            if(!isset($rules[$v])){
                $rules[$v] = array();
                if(isset($variation[$nextIndex])){
                   array_push($rules[$v],$variation[$nextIndex]);
                }
            } else {
                if(isset($variation[$nextIndex])){
                    array_push($rules[$v],$variation[$nextIndex]);
                }
            }
        }

        $variation = array_reverse($variation);
        foreach ($variation as $index => $v) {
            $nextIndex = ++$index;
            if(isset($variation[$nextIndex])){
                array_push($rules[$v],$variation[$nextIndex]);
            }
        }
    }

和规则数组是这样的:

array:5 [
  "2_12" => array:1 [
    0 => "4_9"
  ]
  "4_9" => array:2 [
    0 => "2_12"
    1 => "2_3"
  ]
  "2_3" => array:1 [
    0 => "4_9"
  ]
  "2_4" => array:1 [
    0 => "4_10"
  ]
  "4_10" => array:1 [
    0 => "2_4"
  ]
]