Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 组mysql生成多维数组_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php 组mysql生成多维数组

Php 组mysql生成多维数组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我有以下资料: $variants = [ 0 => [ "variant_name" => "iPhone 5", "sku_id" => "2", "sku" => "GLC-IPH5REDXXXL", "stock_total" => "10", "stock_left" => "10", "retail_price" => 1000, "on_sale_price"

我有以下资料:

$variants = [
     0 => [
     "variant_name" => "iPhone 5",
     "sku_id" => "2",
     "sku" => "GLC-IPH5REDXXXL",
     "stock_total" => "10",
     "stock_left" => "10",
     "retail_price" => 1000,
     "on_sale_price" => 0
    ],
    1 => [
     "variant_name" => "Red",
     "sku_id" => "2",
     "sku" => "GLC-IPH5REDXXXL",
     "stock_total" => "10",
     "stock_left" => "10",
     "retail_price" => 1000,
     "on_sale_price" => 0
    ],
    2 => [
     "variant_name" => "iPhone 6s Plus",
     "sku_id" => "4",
     "sku" => "GLC-IPH6SP",
     "stock_total" => "5",
     "stock_left" => "5",
     "retail_price" => 1000,
     "on_sale_price" => 0
    ],
    3 => [
     "variant_name" => "iPhone 6s",
     "sku_id" => "13",
     "sku" => "GLC-IPH6S",
     "stock_total" => "5",
     "stock_left" => "5",
     "retail_price" => 1000,
     "on_sale_price" => 0
    ]
 ]
我想把它们放在下面的数组中

0 => [
 "sku_id" => "2",
 "sku" => "GLC-IPH5REDXXXL",
 "stock_total" => "10",
 "stock_left" => "10",
 "retail_price" => 1000,
 "on_sale_price" => 0,
 "options" => ['iPhone 4', 'Red'],
 "option1" => 'iPhone4',
 "option2" => 'Red',
 "option3" => null
],
1 => [
 "sku_id" => "4",
 "sku" => "GLC-IPH6SP",
 "stock_total" => "5",
 "stock_left" => "5",
 "retail_price" => 1000,
 "on_sale_price" => 0,
 "options" => ['iPhone 6s Plus'],
 "option1" => 'iPhone 6s Plus',
 "option2" => null,
 "option3" => null
],
2 => [
 "sku_id" => "13",
 "sku" => "GLC-IPH6S",
 "stock_total" => "5",
 "stock_left" => "5",
 "retail_price" => 1000,
 "on_sale_price" => 0,
 "options" => ['iPhone 6s'],
 "option1" => 'iPhone 6s',
 "option2" => null,
 "option3" => null
]
  • 我无法用每个变量的名称填充选项
  • 我无法将选项1、选项2、选项3设置为每个对应的变量名称
  • 我在第一个数组上尝试了一个简单的
    foreach($v)循环
    options,option1,option2,option3,从中我得到了重复的值


    我就是不知道怎么做,有什么建议吗?

    你可以用一个简单的
    foreach()
    或者
    for()
    。这里的
    for()
    效率有点低,因为它每次都运行,因此重复性很高,并且会不断被覆盖……但它可以工作:

     foreach($variants as $rows) {
        $sku[$rows['sku_id']]['sku_id']         =   $rows['sku_id'];
        $sku[$rows['sku_id']]['sku']            =   $rows['sku'];
        $sku[$rows['sku_id']]['stock_total']    =   $rows['stock_total'];
        $sku[$rows['sku_id']]['stock_left']     =   $rows['stock_left'];
        $sku[$rows['sku_id']]['retail_price']   =   $rows['retail_price'];
        $sku[$rows['sku_id']]['on_sale_price']  =   $rows['on_sale_price'];
        $sku[$rows['sku_id']]['options'][]      =   $rows['variant_name'];
    
        for($i = 0; $i < 3; $i++)
            $sku[$rows['sku_id']]['option'.($i+1)]  =   (isset($sku[$rows['sku_id']]['options'][$i]))? $sku[$rows['sku_id']]['options'][$i] : NULL;
     }
    
    echo print_r(array_values($sku));
    
    解决方案

    $result = [];
    
    foreach($variants as $v) {
        $result[$v['sku_id']]['sku_id'] = $v['sku_id'];
        $result[$v['sku_id']]['sku'] = $v['sku'];
        $result[$v['sku_id']]['stock_left'] = $v['stock_left'];
        $result[$v['sku_id']]['retail_price'] = price($v['retail_price']);
        $result[$v['sku_id']]['options'][] = $v['variant_name'];
    
        if(isset($result[$v['sku_id']]['options'][0])) {
            $result[$v['sku_id']]['option1'] = $result[$v['sku_id']]['options'][0]; 
        }
        else {
            $result[$v['sku_id']]['option1'] = null;        
        }
    
        if(isset($result[$v['sku_id']]['options'][1])) {
            $result[$v['sku_id']]['option2'] = $result[$v['sku_id']]['options'][1]; 
        }
        else {
            $result[$v['sku_id']]['option2'] = null;        
        }
    
        if(isset($result[$v['sku_id']]['options'][2])) {
            $result[$v['sku_id']]['option3'] = $result[$v['sku_id']]['options'][2]; 
        }
        else {
            $result[$v['sku_id']]['option3'] = null;        
        }
    }
    
    return $result;
    

    谢谢你的评论,但我同时已经解决了:)我将在下面发布答案。你的答案是相似的,但我的解决方案有点不同
    $result = [];
    
    foreach($variants as $v) {
        $result[$v['sku_id']]['sku_id'] = $v['sku_id'];
        $result[$v['sku_id']]['sku'] = $v['sku'];
        $result[$v['sku_id']]['stock_left'] = $v['stock_left'];
        $result[$v['sku_id']]['retail_price'] = price($v['retail_price']);
        $result[$v['sku_id']]['options'][] = $v['variant_name'];
    
        if(isset($result[$v['sku_id']]['options'][0])) {
            $result[$v['sku_id']]['option1'] = $result[$v['sku_id']]['options'][0]; 
        }
        else {
            $result[$v['sku_id']]['option1'] = null;        
        }
    
        if(isset($result[$v['sku_id']]['options'][1])) {
            $result[$v['sku_id']]['option2'] = $result[$v['sku_id']]['options'][1]; 
        }
        else {
            $result[$v['sku_id']]['option2'] = null;        
        }
    
        if(isset($result[$v['sku_id']]['options'][2])) {
            $result[$v['sku_id']]['option3'] = $result[$v['sku_id']]['options'][2]; 
        }
        else {
            $result[$v['sku_id']]['option3'] = null;        
        }
    }
    
    return $result;