for循环中的数组值停止加载页面并创建无限循环php

时间:2018-06-29 12:41:16

标签: php

我有一个页面,我在其中运行数据库的while循环。在显示页面之前,我最终需要一些信息,因此最终不得不设置一个数组来存储while循环信息。 while循环完成后,页面就会加载。

        $first = $data[$key]['order'][$data_order_id]['lowest_staff_markup'];
        $second = $data[$key]['order'][$data_order_id]['lowest_markup'];

如果我使用echo $first .' ... '. $second;,它将返回12 ... 30

值已正确设置。数组有效

现在,我需要设置一个for循环以在数字之间循环。如果我手动输入12和30,效果很好。但是,当我尝试放入$ first和$ second时,整个for循环会冻结页面并创建12

的无限循环
echo '<select name="markup['. $cart_result['product_table'] .':'. $cart_result['product_id'] .']" />';  // fix this
        for ($mu = $first;
        $mu <= $second;
        $mu++) {
            echo '<option value="'. $data[$key]['order'][$data_order_id]['markup_key'] .'">'. $mu .' %</option>';
            }
        echo '</select>';

知道为什么会这样吗?我一直在盯着这段代码,试图理解它已经太久了。我已经尽力想尽一切办法,即使我确定答案很明显。

就像我说的那样,如果将数字手动放入,for循环会完美地工作,这样我就知道代码本身可以工作。

对不起,如果有错字。我从代码中删除了不需要的部分,例如“ selected = selected”条件,等等。我只放置了解决问题所需的代码量。

1 个答案:

答案 0 :(得分:1)

使用OP在注释中调试后

var_dump($first);
var_dump($second);

似乎$first包含空格:

  

string(3)“ 12”
  字符串(2)“ 30”

解决方案:
将字符串转换为整数可以解决此问题:

for ($mu = (int)$first; $mu <= (int)$second; $mu++) {
    // code here ...
}