如果數組中有一個或兩個元素,則 foreach 循環不會按預期工作。$min = INF;$max = -INF;foreach ($mainResponse['chart'] as $elem) { if ($elem['soldPrice'] > $max) { $max = $elem['soldPrice']; $maxDate = $elem['dateSold']; } elseif ($elem['soldPrice'] < $min) { $min = $elem['soldPrice']; $minDate = $elem['dateSold']; }}這是數組的示例。"chart":[{"soldPrice":780,"dateSold":"08\/30\/2020"},{"soldPrice":999.99,"dateSold":"08\/30\/2020"}]當我嘗試處理這個問題時,什么也沒有出現。為什么 foreach 循環不循環遍歷它?這就是我會得到的..."minDate":null,"maxDate":"08\/30\/2020","maxPrice":"999.99","minPrice":"inf"對于這兩個,我希望它能夠確定正確的最小/最大以及日期。如果有 3 個或更多,則效果很好。
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
問題在于,在任何情況下,soldPrice
始終大于 $max
。因此,在循環的每次迭代中,它將始終進入第一個 if
塊,而永遠不會進入 elseif
塊,因此只會覆蓋 $max
和 $maxPrice
每次。
它與數組中的 3 個項目一起使用的事實可能只是巧合 - 您沒有顯示示例,但似乎可以肯定最后一個項目的 sellPrice 較低。
您可以通過更改來輕松解決此問題
elseif ($elem['soldPrice'] < $min) {
到
if ($elem['soldPrice'] < $min) {
演示:http://sandbox.onlinephpfunctions.com/code/aaeb71e0d95ecf4065d9c1a6fb99e9fb241eca9e
帶有額外數據項的第二個演示,以更有效地展示它:
- 1 回答
- 0 關注
- 159 瀏覽
添加回答
舉報
0/150
提交
取消