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 關注
- 192 瀏覽
添加回答
舉報