为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用键更改特定多维数组的值?

如何使用键更改特定多维数组的值?

PHP
慕姐4208626 2021-05-18 13:14:06
我在多维数组中面临一个问题。如果选择的ID和变体都与会话产品之一相同,则我需要在会话中更改特定产品集的数量,然后将此产品加1。我发布的产品 $newproductArray(    [id] => 2    [title] => Vewlix 1080p (red and white)    [image] => amazing-modern-villa-Freshome-02.jpg    [variants] => Array        (            [0] => Array                (                    [id] => 2                    [option_name] => Panel 2 players (+50 euros)                    [option_price] => 50.00                )        )    [quantity] => 1    [unit_price] => 1950.00    [price] => 2000)这是我的$_SESSION['shopping_cart']:Array(    [0] => Array        (            [id] => 2            [title] => Vewlix 1080p (red and white)            [image] => amazing-modern-villa-Freshome-02.jpg            [variants] => Array                (                    [0] => Array                        (                            [id] => 1                            [option_name] => Panel 1 player                            [option_price] => 0.00                        )                )            [quantity] => 2            [unit_price] => 1950.00            [price] => 1950        )    [1] => Array        (            [id] => 2            [title] => Vewlix 1080p (red and white)            [image] => amazing-modern-villa-Freshome-02.jpg            [variants] => Array                (                    [0] => Array                        (                            [id] => 2                            [option_name] => Panel 2 players (+50 euros)                            [option_price] => 50.00                        )                )            [quantity] => 1            [unit_price] => 1950.00            [price] => 2000        )    )现在,我可以使用ID和变体比较,但是在发布类似产品时,不是仅增加具有相同ID /变体的特定产品,而是将会话中的所有产品数量增加+1。如何只为具有完全相同的ID /变体的产品添加+1?我认为我的[$ key]不起作用,因为它应该是仅增加适当产品数量的过滤器
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您的问题不是大问题。您可能只想if在代码中添加一个正确的代码,以便对++您可能得到的那个新项目执行操作。


我不太确定您的某些变量。但是,我的猜测是,您可能只需要在if之前添加一个array_push,也许类似于以下内容:


        if ((int) $newproduct['id'] == (int) $value["id"]) {

            $_SESSION['shopping_cart'][$key]['quantity'] = (int) $_SESSION['shopping_cart'][$key]['quantity'] + 1;

        }

如果您添加一个正确的if,而不是将s++加到所有$values上,您的问题将得到解决。这也可能起作用:


        if ((int) $newproduct['id'] == (int) $value["id"]) {

            $_SESSION['shopping_cart'][$key]['quantity'] = (int) $value['quantity'] + 1;

        }

$_SESSION['shopping_cart'] = array

    (

    "0" => array

    (

        "id" => "2",

        "title" => "Vewlix 1080p (red and white)",

        "image" => "amazing-modern-villa-Freshome-02.jpg",

        "variants" => array

        (

            "0" => array

            (

                "option_id" => "1",

                "option_name" => "Panel 1 player",

                "option_price" => "0.00",

            ),


        ),


        "quantity" => "1",

        "unit_price" => "1950.00",

        "price" => "1950",

    ),


    "1" => array

    (

        "id" => "2",

        "title" => "Vewlix 1080p (red and white)",

        "image" => "amazing-modern-villa-Freshome-02.jpg",

        "variants" => array

        (

            "0" => array

            (

                "option_id" => "1",

                "option_name" => "Panel 2 players (+50 euros)",

                "option_price" => "50.00",

            ),


        ),


        "quantity" => "1",

        "unit_price" => "1950.00",

        "price" => "2000",

    ),


);


foreach ($_SESSION['shopping_cart'] as $key => $value) {

    if (in_array($newproduct['id'], $shopping_ids) && empty($variants_diff)) {

        if ((int) $newproduct['id'] == (int) $value["id"]) {

            $_SESSION['shopping_cart'][$key]['quantity'] = (int) $_SESSION['shopping_cart'][$key]['quantity'] + 1;

        }

    } else {

        array_push($_SESSION['shopping_cart'], $newproduct);

    }

}


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信