为了账号安全,请及时绑定邮箱和手机立即绑定

foreach 循环不会遍历所有 1 或 2 个元素

foreach 循环不会遍历所有 1 或 2 个元素

PHP
holdtom 2023-12-15 15:16:45
如果数组中有一个或两个元素,则 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

带有额外数据项的第二个演示,以更有效地展示它:


查看完整回答
反对 回复 2023-12-15
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信