猿问

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

我在多维数组中面临一个问题。如果选择的ID和变体都与会话产品之一相同,则我需要在会话中更改特定产品集的数量,然后将此产品加1。


我发布的产品 $newproduct


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

)

这是我的$_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]不起作用,因为它应该是仅增加适当产品数量的过滤器


慕姐4208626
浏览 176回答 2
2回答

蓝山帝景

您的问题不是大问题。您可能只想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);    }}
随时随地看视频慕课网APP
我要回答