在不使用 strlen() 的情况下计算字符串长度时未初始化的字符串偏移量


Uninitialized string offset while calculating string length without using strlen()

<?php
$a = "Hello World I am Neha Singh Chouhan";
$length = 0;  
do {
    $length++; 
}
while ($a[$length] != null);
echo "Length = ".$length."<br/>";
for ($i = $length - 1; $i >= 0; $i--) {
    echo $a[$i]; 
}
?>

尝试在不使用内置函数 strlen(( 的情况下计算字符串长度。

输出为

注意:未初始化的字符串偏移量:C:''xampp''htdocs''Neha''ProgramsFromClass''10_reverse_string.php 在第 7
行中的 35 长度 = 35 nahuohC hgniS aheN ma I dlroW olleH

是什么原因导致通知,我该如何摆脱它?

您的循环不正确。在开始使用$length之前,您递增,并从字符串的末尾运行。因此,您正在测试偏移量,1,2,3,...n ,其中n是字符串末尾的一个。

而且由于您正在测试不存在的"数组"键,因此无论您如何看待它,您也总是会收到错误,即使您交换了循环类型。

do/while 不是用于此目的的循环。你想要一个普通的while循环,并改用isset()

$length = 0;
while(isset($a[$length])) { $length++; }