【问题标题】:Uninitialized string offset while calculating string length without using strlen()未使用 strlen() 计算字符串长度时未初始化的字符串偏移量
【发布时间】:2014-09-16 16:41:56
【问题描述】:
<?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() 的情况下计算字符串长度。

输出是

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

是什么导致了通知,我怎样才能摆脱它?

【问题讨论】:

    标签: php strlen


    【解决方案1】:

    您的循环不正确。你增加你的$length BEFORE 你开始使用它,并跑出字符串的末尾。因此,您正在测试偏移量,1,2,3,...n,其中n 是字符串末尾的一个。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多