2013-11-14 82 views
0

我有一种感觉,这是我的一个愚蠢/愚蠢的错误,但我需要一组新的眼睛...我试图循环使用substr字符串,但是没有得到预期的结果。奇怪的PHP substr()问题

例如,echo substr("950122", 2, 2); 01输出到屏幕上,而不是5并使用3索引给我122而不是0

我将如何遍历正确字符串?
http://ideone.com/YKz7g3

<?php 
$str = "950122"; 
for($i = 1; $i <= strlen($str); $i++) { 
    echo substr($str, $i, $i) . "\n"; 
} 
?> 
+1

这是为什么古怪?你读过[手册](http://us3.php.net/substr)吗? –

回答

6

起始位置开始在01。所以要获得5您使用1,1并获得0使用2,1

0,1会给你第一个字符9

此外,为substr()第三个参数是长度,所以如果你使用1你从start 1个字符或2让你从一开始就2个字符。

0,6会给950122

+0

是的,第三个参数是我的坏...我一直在Lua脚本中,它的第三个参数是你想要的最后一个字符的位置。我知道这很愚蠢。 :)谢谢 – user1960364

4

1)i应该是0

2)它应该是substr($str, $i, 1)substr($str, $i, $i)

+1

你真的想''($ str,$ i,1)'不是吗?第三个参数是长度,而不是终点 –

+1

@SetSailMedia是的,你是对的我认为它不是len。 –

1

http://ideone.com/9qlwje

<?php 
$str = "970122"; 
for($i = 0; $i <= strlen($str); $i++) { 
    echo substr($str, $i, 1) . "\n"; 
} 
?>