代码之家  ›  专栏  ›  技术社区  ›  Leanne Seawright

更改php数组以显示产品ID的不同值和数组

  •  2
  • Leanne Seawright  · 技术社区  · 7 年前

    我甚至不知道该从哪里开始,我的大脑现在已经崩溃了。所以我想我应该寻求一些帮助!基本上,我在一个opencart站点上工作,我正在尝试更改一个数组,以便将产品ID分组。

    这是它吐出的数组:

    Array
    (
        [0] => Array
            (
                [product_id] => 50
                [category] => Shop by Carton
            )
    
        [1] => Array
            (
                [product_id] => 52
                [category] => Shop by Carton
            )
    
        [2] => Array
            (
                [product_id] => 53
                [category] => Shop by Carton
            )
    
        [3] => Array
            (
                [product_id] => 54
                [category] => Shop by Carton
            )
    
        [4] => Array
            (
                [product_id] => 55
                [category] => Shop by Box
            )
    
        [5] => Array
            (
                [product_id] => 56
                [category] => Shop by Box
            )
    
        [6] => Array
            (
                [product_id] => 57
                [category] => Shop by Box
            )
    
        [7] => Array
            (
                [product_id] => 58
                [category] => Shop by Box
            )
    
    )
    

    但我希望得到的是:

    Array
    (
        [0] => Array
            (
                [category] => Shop by Carton
                [product_id] => Array 
                (
                    [product_id] => 50
                    [product_id] => 52
                    [product_id] => 53
                    [product_id] => 54
                )
            )
    
        [1] => Array
            (
                [category] => Shop by Box
                [product_id] => Array 
                (
                    [product_id] => 55
                    [product_id] => 56
                    [product_id] => 57
                    [product_id] => 58
                )
            )
    )
    

    $data['children']           = $this->model_catalog_product->getProductChildren($this->request->get['product_id']);
                        $data['options']            = array();
                        $product_option_value_data  = array();
    
                        foreach ($data['children'] as $product) :
    
                            foreach ($this->model_catalog_product->getProductOptions($product['product_id']) as $option) :
    
                                foreach ($option['product_option_value'] as $option_value) :
                                    $product_option_value_data = $option['name'].' '.$option_value['name'];
                                endforeach;
    
                                $data['options'][] = array(
                                    'product_id'    => $product['product_id'],
                                    'category'      => $product_option_value_data
                                );
    
                            endforeach;
    
                        endforeach;
    
                        echo '<pre>';print_r($data['options']);echo '</pre>';
    

    如果有人能帮我实现我想要的东西,那太棒了。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Akkapong Kajornwongwattana    7 年前

    第一件事

    Array 
            (
                [product_id] => 50
                [product_id] => 52
                [product_id] => 53
                [product_id] => 54
            )
    

    尝试此代码

    $lists = [
        [
            "product_id" => 50,
            "category"   => "Shop by Carton"
        ],[
            "product_id" => 52,
            "category"   => "Shop by Carton"
        ],[
            "product_id" => 53,
            "category"   => "Shop by Carton"
        ],[
            "product_id" => 54,
            "category"   => "Shop by Carton"
        ],[
            "product_id" => 55,
            "category"   => "Shop by Box"
        ],[
            "product_id" => 56,
            "category"   => "Shop by Box"
        ],[
            "product_id" => 57,
            "category"   => "Shop by Box"
        ],[
            "product_id" => 58,
            "category"   => "Shop by Box"
        ]
    ];
    
    //Define temp data
    $tmps = [];
    
    foreach ($lists as $list) {
        $cat = $list["category"];
        $pro = $list["product_id"];
    
        if (!isset($tmps[$cat])) {
            $tmps[$cat] = [];
        }
    
        //add product to temp
        $tmps[$cat][] = ["product_id" => $pro];
    }
    
    //Define output
    $outputs = [];
    
    //format data from temp
    foreach ($tmps as $cat => $pros) {
        $outputs[] = [
            "category"   => $cat,
            "product_id" => $pros,
        ];
    }
    
    print_r($outputs); 
    

    希望这有帮助。

        2
  •  1
  •   Jean Michél Marca    7 年前

    <?php
    
    $array[0]['product_id'] = 50;
    $array[0]['category'] = 'Shop by Carton';
    $array[1]['product_id'] = 52;
    $array[1]['category'] = 'Shop by Carton';
    $array[2]['product_id'] = 55;
    $array[2]['category'] = 'Shop by Box';
    
    $newAr = array();
    foreach ($array as $value) {
        $newAr[$value['category']]['category']=$value['category'];
        $newAr[$value['category']]['product_id'][]=$value['product_id'];
    }
    $newAr = array_values($newAr);
    echo "<pre>";
    print_r($newAr);
    echo "</pre>";
    ?>
    
    推荐文章