我有一个页面,我从数据库运行一个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 循环可以完美运行。
对不起,如果有任何错别字。 我删除了代码中不需要的部分,例如"选定=选定"条件等。 我只放置了问题所需的代码量。
使用 OP 在注释中调试后
使用var_dump($first);
var_dump($second);
似乎$first
包含一个空格:
字符串(3( "12"字符串(2( "30">
解决方案:将字符串转换为整数可解决此问题:
for ($mu = (int)$first; $mu <= (int)$second; $mu++) {
// code here ...
}