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

标签 php arrays

我什至不知道从哪里开始,我的大脑现在很困惑。所以我想我应该寻求一些帮助!基本上我正在开发一个 opencart 网站,并且我正在尝试更改一个数组,以便它将 Product_ids 分组到类别中。

这是它吐出的数组:

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>';

如果有人可以帮助我实现我所追求的目标,那就太好了。

最佳答案

第一件事

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

不可能导致 key 重复,所以我改变了一点 试试这个代码

$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); 

希望这有帮助。

关于php - 更改 php 数组以显示不同的值和产品 ID 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209828/

相关文章:

php - 将 api key 传递给 rest api

c++ - 为 vector 成员提供默认值并更新元素

javascript - React - 迭代数组中的键值对

php - 在 VOLLEY 中同时发送帖子和获取请求

php - 从检索到的行生成多维数组

php - 使用 CodeIgniter 在表中显示数组结果时出现问题

Java 2D 数组越界错误

PHP 数组修剪空白索引值

php - 如何将 Laravel Blade 中的第一个字母大写

php - 为什么 02000 被评估为 1024