我运行程序时遇到此错误:
注意:未初始化的字符串偏移量:第21行的C:\ xampp \ htdocs \ demo \ str_rev.php中为7
是什么导致的?
<?php
//strrev($arg);
/*$str = "ademola";
echo strrev("$str");
*/
function reverse_String($str){
$i = 0;
while(!empty($str[$i])){
echo $str[$i];
$i++;
}
for($r = $i; $r > -1; $r--){
$reverse = $str[$r];
echo $reverse;
}
}
reverse_String("Ademola");
?>
输出:
Ademola
Notice: Uninitialized string offset: 7 in C:\xampp\htdocs\demo\str_rev.php on line 21
alomedA
答案 0 :(得分:1)
您的第一个$i++;
循环中的while
在其上一次迭代中将$i
增加到7。条件!empty($str[$i])
不再满足,因此循环不会再次执行,但是当下一个循环开始时$i
仍为7,这是超出字符串结尾的索引。
有多种方法可以解决这个问题,一种简单的方法是在定义第二个循环时将$r
设置为字符串中最后一个字符的索引,从计数器中减去1。
for($r = $i - 1; $r > -1; $r--){ ...
答案 1 :(得分:0)
正如Do not Panic所提到的,有很多方法可以解决这个问题, 你可以使用isset作为: -
for($r = $i; $r > -1; $r--){
if(isset($str[$r])) {
$reverse = $str[$r];
echo $reverse;
}
}
或者要反转字符串,你可以简单地使用php的内置函数(strrev)
echo strrev('Ademola')