Php 在Json数组中,按产品价格ASC和DESC短列输出

Php 在Json数组中,按产品价格ASC和DESC短列输出,php,Php,需要根据产品价格及其变动价格重新安排(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 => pric

需要根据产品价格及其变动价格重新安排(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 }
因此,它将通过

因为,产品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"
                    }
                }
            ]
        },
        {
            "product_id": "55",
            "product_variations": [
                {
                    "details": {
                        "variation_id": "133",
                        "variation_image": "http://192.168.1.1/RGB_api/DUMMY",
                        "variation_price": "1600.00"
                    }
                },
                {
                    "details": {
                        "variation_id": "134",
                        "variation_image": "http://192.168.1.1/RGB_api/DUMMY",
                        "variation_price": "1200.00"
                    }
                },
                {
                    "details": {
                        "variation_id": "135",
                        "variation_image": "http://192.168.1.1/",
                        "variation_price": "2600.00"
                    }
                }
            ]
        }
    ]
}

您使用PHP标记,但没有PHP逻辑。 你能把它放在这儿看看该怎么办吗

否则,可以在PHP中解码json并在PHP逻辑中对其排序。 之后,您可以将PHP变量编码为json。 见:


    • 您可以使用
      PHP
      usort

      基本上,
      usort($array,“cmp”)
      将对
      $array
      中的两个元素的每个组合
      ($a,$b)
      执行回调函数
      cmp($a,$b)
      ,当它返回
      1
      时,将
      $a
      放在
      $b
      下面,当它返回
      -1
      时,当它返回
      0
      时不执行任何操作。请注意,排序算法使用演绎法,因此它只需要计算所有可能对的子集
      ($a,$b)

      在这里,我使用比较函数
      cmp2
      对产品的每个变体进行排序,以获得指数
      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
                                              )
      
                                      )
      
                              )
      
                      )
      
              )
      
      )
      

      主席先生,谢谢你宝贵的答覆。你能给我一张什么是a美元和b美元的小纸条吗?这对我很有帮助。再次感谢。请去阅读。我们希望你展示你已经尝试过的东西,而不仅仅是在这里“放弃你的要求”。这不是一个代码编写服务。
      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
                                              )
      
                                      )
      
                              )
      
                      )
      
              )
      
      )