for 循环中的数组值会阻止页面加载并创建无限循环 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 循环可以完美运行。

对不起,如果有任何错别字。 我删除了代码中不需要的部分,例如"选定=选定"条件等。 我只放置了问题所需的代码量。

使用 OP 在注释中调试后

使用
var_dump($first);
var_dump($second);

似乎$first包含一个空格:

字符串(3( "12"字符串(2( "30">

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

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

最新更新