我有一个页面,我在其中运行数据库的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”条件,等等。我只放置了解决问题所需的代码量。
答案 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 ...
}