简单的php无限循环问题

时间:2011-03-27 06:24:20

标签: php while-loop infinite-loop

我进入一个无限循环,我希望你能帮助我理解为什么!

我的代码:

while($numbers{$i} != '|')
{            
        $tempString = $tempString.$numbers{$i};
        $i++;
}

$numbers是一个字符串,我基本上试图将字符串的每个字符与'|'进行比较

现在可行:

if($numbers{$i} != '|')
{
     echo "bla";
}

我正在传递asd|asd所以它应该在找到“|”时中断但它没有!

它有什么问题吗?

还有其他方法可以将字符串分解为数组吗?

提前致谢 - 迈克

3 个答案:

答案 0 :(得分:2)

我无法解释为什么问题中的代码会导致无限循环,但这里有几个替代方案......

使用explode()使用|将原始字符串切成碎片然后作为分隔符从结果数组中访问第一部分:

$bits = explode('|', $numbers);
$tempString = $bits[0];

或者,使用strpos()查找第一个|的位置然后使用substr提取前面的字符:

$pos = strpos($numbers, '|');
$tempString = substr($numbers, 0, $pos-1);

答案 1 :(得分:1)

我怀疑当你递增(i ++)时,你正在索引$ number的结尾,并且PHP正在为你扩展$ number,可能是空字符或空字符。你可能还需要检查我是否不大于$ number的当前大小来停止循环。

考虑在循环中放置echo $ numbers {i},看看发生了什么。

答案 2 :(得分:0)

您应该只使用PHP的explode函数:)