不使用函数检测字符串结尾

时间:2011-11-03 15:24:15

标签: php string

如何找出PHP字符串的结尾?我有一个任务:识别没有任何功能的字符串长度。我知道PHP中的所有字符串都以空字节(\0)结尾,但我不知道最后一个符号后面的字符串元素。

例如,这不起作用:

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

如何在不使用任何功能的情况下知道字符串的长度?

2 个答案:

答案 0 :(得分:14)

在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

答案 1 :(得分:4)

$string = 'hello';
$length = 0;
while (isset($string[$length])) {
    $length++;
}
echo $length; //5