2011-11-03 35 views
2

如何查找PHP字符串的結尾?我有一項任務:識別沒有任何功能的字符串長度。我知道PHP中的所有字符串都以空字節結尾(\0),但我無法知道最後一個符號後面的字符串元素。檢測字符串的末尾而不使用函數

例如,這是不行的:

while($a[++$length]); 

如何知道字符串的長度,不使用任何功能呢?

+3

那空字節是一個實現細節。我不認爲你最後可以訪問空字節。 PHP不是C.可能是錯誤的,但我不認爲你的方法會起作用。 – Joe

+2

@evilone我懷疑任何理智的教育者會向學生介紹所有語言的* php *編程。 – phihag

+1

@愛哈格雖然我同意你的觀點,但你不能確定教育者,由一些奇怪的問題來判斷。這可能只是OP的幻想。 –

回答

11

在PHP中,字符串最終以空字節。例如,$s = 'a';echo $s[1];會產生警告(這就是爲什麼您不應該使用$a[$length] == ""進行測試)。此外,PHP字符串可以包含空字節 - 它們確實是字節數組。

但是,您可以使用的語言構造isset測試是否閱讀$a[$length]值會產生警告:

$a = "a\0b\0c"; 
for ($length = 0;isset($a[$length]);$length++) ; 
echo $length; // 5 
3
$string = 'hello'; 
$length = 0; 
while (isset($string[$length])) { 
    $length++; 
} 
echo $length; //5 
+0

如果我在字符串中有數字0,它不工作。它應該像$ length = 0; while($ string [$ length]!=「」){ $ length ++; } – DraggonZ

+0

@draggonz,看我的編輯。 – pltvs

+0

這與'NUL'字節無關。 'isset($ string [42])'將具有相同的語義。 (作爲['isset'](http://php.net/manual/en/function.isset.php)中的文檔,NUL不是NULL。) – 2011-11-03 15:54:20

相關問題