Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 展平多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 展平多维数组

Php 展平多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,(请不要介意标题,我不知道如何正确命名)我目前有一个多维数组,看起来像这样: Array ( [0] => Array ( [French Navy] => Array ( [84] => 2XL [quantity] => 999 [product_colour_sizes_id] => 36786

(请不要介意标题,我不知道如何正确命名)我目前有一个多维数组,看起来像这样:

Array
(
[0] => Array
    (
        [French Navy] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36786
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 182
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[1] => Array
    (
        [Classic Red] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36780
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 178
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[2] => Array
    (
        [Burgundy] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36774
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 106
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[3] => Array
    (
        [Bright Royal] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36768
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 176
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[4] => Array
    (
        [Bottle Green] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36762
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 86
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[5] => Array
    (
        [Black] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36756
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 75
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

)
Array
(
  [product_colour_sizes_id] => 36790
  [product_colour_sizes_product_id] => 1276
  [product_colour_sizes_option_value_colour_id] => 182
  [product_colour_sizes_option_value_size_id] => 84
  [quantity] => 999
  [product_colour_sizes_name_sizes1] => 2XL => [id1] => 83
  [product_colour_sizes_name_sizes2] => L   => [id2] => 84
  [product_colour_sizes_name_sizes3] => S   => [id3] => 85
  [product_colour_sizes_name_sizes4] => M   => [id4] => 86   
  [product_colour_sizes_name_colours] => French Navy
)
我想做的是,将每次迭代减少到它自己的数组中,这样我就可以以名称的形式访问键值(如果有意义的话)。大概是这样的:

Array
(
[0] => Array
    (
        [French Navy] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36786
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 182
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[1] => Array
    (
        [Classic Red] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36780
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 178
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[2] => Array
    (
        [Burgundy] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36774
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 106
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[3] => Array
    (
        [Bright Royal] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36768
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 176
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[4] => Array
    (
        [Bottle Green] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36762
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 86
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

[5] => Array
    (
        [Black] => Array
            (
                [84] => 2XL   
                [quantity] => 999
                [product_colour_sizes_id] => 36756
                [product_colour_sizes_product_id] => 1276
                [product_colour_sizes_option_value_colour_id] => 75
                [product_colour_sizes_option_value_size_id] => 80
                [83] => XL    
                [82] => L     
                [81] => M     
                [80] => S     
            )

    )

)
Array
(
  [product_colour_sizes_id] => 36790
  [product_colour_sizes_product_id] => 1276
  [product_colour_sizes_option_value_colour_id] => 182
  [product_colour_sizes_option_value_size_id] => 84
  [quantity] => 999
  [product_colour_sizes_name_sizes1] => 2XL => [id1] => 83
  [product_colour_sizes_name_sizes2] => L   => [id2] => 84
  [product_colour_sizes_name_sizes3] => S   => [id3] => 85
  [product_colour_sizes_name_sizes4] => M   => [id4] => 86   
  [product_colour_sizes_name_colours] => French Navy
)
我用于生成第一个数组的当前php代码如下:

$colours = array();
                        $sizes = array();
                        $color = "";
                        $id = "";
                        $quantity = "";
                        //$count = count($colours);

                        foreach($product_combinations as $key => $product_combination){
                            if($key > -1){
                                if(
                                    $product_combinations[$key+1]['product_colour_sizes_name_colours']
                                    == $product_combinations[$key]['product_colour_sizes_name_colours']
                                  ){

                                    $color  = $product_combinations[$key]['product_colour_sizes_name_colours'];
                                    $id = $product_combinations[$key]['product_colour_sizes_option_value_size_id'];
                                    $sizes[$id] = $product_combinations[$key]['product_colour_sizes_name_sizes'];
                                    $quantity = $product_combinations[$key]['quantity'];
                                    $sizes['quantity'] = $quantity;

                                    /* Dont forget theses*/
                                    $sizes['product_colour_sizes_id'] = $product_combination['product_colour_sizes_id'];
                                    $sizes['product_colour_sizes_product_id'] = $product_combination['product_colour_sizes_product_id'];
                                    $sizes['product_colour_sizes_option_value_colour_id'] = $product_combination['product_colour_sizes_option_value_colour_id'];
                                    $sizes['product_colour_sizes_option_value_size_id'] =$product_combination['product_colour_sizes_option_value_size_id'];

                                } else {
                                    array_push($colours, 
                                    array(
                                        $color => $sizes

                                    ));

                                    unset($sizes);
                                }
                            }
                        }

如何执行此操作?

下面是将输入数组转换为一维数组的代码:

echo '<pre>';

$new_product_combinations = array();

foreach ($product_combinations as $k => $v) {
    $array = array();
    foreach ($v as $k1 => $v1) {
        $i = 1;
        foreach ($v1 as $k2 => $v2) {
            if (is_int($k2)) {
                $j = $i++;
                $array['product_colour_sizes_name_sizes' . $j] = $v2;
                $array['id' . $j] = $k2;
            } else {
                $array[$k2] = $v2;
            }
        }
        $array['product_colour_sizes_name_colours'] = $k1;
    }
    print_r($array); // output single combination
    $new_product_combinations[] = $array;
}

print_r($new_product_combinations); 

希望这能对你有所帮助。

你能详细说明你想做什么吗?将所有这些数组合并为一个?如果是,在什么条件下?将多维数组转换为一维数组的术语是“展平”,即展平多维数组。您所需的结构没有意义,
product\u color\u size\u name\u sizes1
和其他类似的术语仍然需要在内部生成另一个数组