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
)
)
)
)
)
)

TA贡献1943条经验 获得超7个赞
您使用 PHP 标记,但没有您的 PHP 逻辑。你能把它放在这里检查要做什么吗?
否则,解决方案可以是在 PHP 中解码 json 并在 PHP 逻辑中对其进行排序。之后,您可以将 PHP 变量编码为 json。看 :
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报