亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Json 數組輸出短按產品價格 ASC 和 DESC

在 Json 數組輸出短按產品價格 ASC 和 DESC

PHP
鴻蒙傳說 2022-01-02 16:27:09
需要按產品價格及其變動價格重新排列( 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"                    }                }            ]        },
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

您可以使用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

                                        )


                                )


                        )


                )


        )


)



查看完整回答
反對 回復 2022-01-02
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

您使用 PHP 標記,但沒有您的 PHP 邏輯。你能把它放在這里檢查要做什么嗎?

否則,解決方案可以是在 PHP 中解碼 json 并在 PHP 邏輯中對其進行排序。之后,您可以將 PHP 變量編碼為 json???:


查看完整回答
反對 回復 2022-01-02
  • 2 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號