2013-11-14 117 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"; 
} 
?>