Php 在Json数组中,按产品价格ASC和DESC短列输出
需要根据产品价格及其变动价格重新安排(ASC/DESC)。 就像我有3个产品id一样,每个产品的价格细节也有2到4个变化 比如: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
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
)
)
)
)
)
)