我进入一个无限循环,我希望你能帮助我理解为什么!
我的代码:
while($numbers{$i} != '|')
{
$tempString = $tempString.$numbers{$i};
$i++;
}
$numbers
是一个字符串,我基本上试图将字符串的每个字符与'|'进行比较
现在可行:
if($numbers{$i} != '|')
{
echo "bla";
}
我正在传递asd|asd
所以它应该在找到“|”时中断但它没有!
它有什么问题吗?
还有其他方法可以将字符串分解为数组吗?
提前致谢 - 迈克
答案 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函数:)