在 Json 数组输出短按产品价格 ASC 和 DESC

需要按产品价格及其变动价格重新排列( ASC / DESC )。就像我有 3 个产品 ID 一样,每个产品也有 2 或 4 个不同的价格细节。


喜欢 :


product 1 { variation 1 => price : 100 , variation 1 => price : 200 }

product 2 { variation 3 => price : 150 , variation 4 => price : 50 }

product 3 { variation 5 => price : 250 , variation 6 => price : 800 }

因此,它将重新排列 (DESC)


product 3 { variation 5 => price : 250 , variation 6 => price : 800 }

product 1 { variation 1 => price : 100 , variation 1 => price : 200 }

product 2 { variation 3 => price : 150 , variation 4 => price : 50 }

因为,产品 3 的价格比产品 2 最大。


{

    "status": true,

    "message": "Product list found.",

    "product_data_list": [

        {

            "product_id": "42",

            "product_variations": [

                {

                    "details": {

                        "variation_id": "88",

                        "variation_image": "http://192.168.1.1",

                        "variation_price": "100.00"

                    }

                },

                {

                    "details": {

                        "variation_id": "89",

                        "variation_price": "50.00"

                    }

                }

            ]

        },

        {

            "product_id": "54",

            "product_variations": [

                {

                    "details": {

                        "variation_id": "128",

                        "variation_image": "http://192.168.1.1/",

                        "variation_price": "4000.00"

                    }

                },

                {

                    "details": {

                        "variation_id": "129",

                        "variation_image": "http://192.168.1.1/",

                        "variation_price": "200.00"

                    }

                }

            ]

        },


鸿蒙传说
浏览 200回答 2
2回答

浮云间

您可以使用PHP usort:https : //www.php.net/manual/en/function.usort.php基本上,usort($array, "cmp")将对来自 2 个元素的cmp($a,$b)每个组合执行回调函数,返回时置于上方,返回时置于下方,返回时不执行任何操作。请注意,排序算法使用推导,因此它只需要计算所有可能对的子集。($a,$b)$array$a$b1$a$b-10($a, $b)在这里,我使用比较函数cmp2对产品的每个变体进行排序以获得 index 处的最高价格0,然后我使用cmp1它们按最高变体价格对产品进行排序:usort($data->product_data_list, "cmp1");print_r($data->product_data_list);function cmp1($a, $b){    usort($a->product_variations, "cmp2");    usort($b->product_variations, "cmp2");    if ($a->product_variations[0]->details->variation_price == $b->product_variations[0]->details->variation_price) {        return 0;    }    return ($a->product_variations[0]->details->variation_price > $b->product_variations[0]->details->variation_price) ? -1 : 1;}function cmp2($a, $b){    if ($a->details->variation_price == $b->details->variation_price) {        return 0;    }    return ($a->details->variation_price > $b->details->variation_price) ? -1 : 1;}输出:stdClass Object(    [status] => 1    [message] => Product list found.    [product_data_list] => Array        (            [0] => stdClass Object                (                    [product_id] => 54                    [product_variations] => Array                        (                            [0] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 128                                            [variation_image] => http://192.168.1.1/                                            [variation_price] => 4000.00                                        )                                )                            [1] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 129                                            [variation_image] => http://192.168.1.1/                                            [variation_price] => 200.00                                        )                                )                        )                )            [1] => stdClass Object                (                    [product_id] => 55                    [product_variations] => Array                        (                            [0] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 135                                            [variation_image] => http://192.168.1.1/                                            [variation_price] => 2600.00                                        )                                )                            [1] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 133                                            [variation_image] => http://192.168.1.1/RGB_api/DUMMY                                            [variation_price] => 1600.00                                        )                                )                            [2] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 134                                            [variation_image] => http://192.168.1.1/RGB_api/DUMMY                                            [variation_price] => 1200.00                                        )                                )                        )                )            [2] => stdClass Object                (                    [product_id] => 42                    [product_variations] => Array                        (                            [0] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 88                                            [variation_image] => http://192.168.1.1                                            [variation_price] => 100.00                                        )                                )                            [1] => stdClass Object                                (                                    [details] => stdClass Object                                        (                                            [variation_id] => 89                                            [variation_price] => 50.00                                        )                                )                        )                )        ))

杨__羊羊

您使用 PHP 标记,但没有您的 PHP 逻辑。你能把它放在这里检查要做什么吗?否则,解决方案可以是在 PHP 中解码 json 并在 PHP 逻辑中对其进行排序。之后,您可以将 PHP 变量编码为 json。看 :https://www.php.net/manual/fr/function.json-encode.phphttps://www.php.net/manual/fr/function.json-decode.php
打开App,查看更多内容
随时随地看视频慕课网APP