2014-09-16 2 views
2
<?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]; 
} 

?> 

inbuilt 함수 strlen()을 사용하지 않고 문자열 길이를 계산하려고했습니다.strlen()을 사용하지 않고 문자열 길이를 계산하는 동안 초기화되지 않은 문자열 오프셋

출력

이 공지되었다 초기화되지 않은 문자열 오프셋 : C 35 : \ XAMPP \ htdocs를 \ 네하 \ ProgramsFromClass \ 10_reverse_string.php 라인 7
길이 = 35 nahuohC hgniS aheN 엄마 I가 dlroW olleH

통지의 원인은 무엇이며 어떻게 제거 할 수 있습니까?

답변

0

루프가 잘못되었습니다. $lengthBEFORE을 사용하기 시작하면 문자열을 끝까지 실행하십시오. 따라서 오프셋을 테스트하고 있습니다 (1,2,3,...n). 여기에서 n은 문자열 끝을 지나서 하나입니다.

존재하지 않는 "배열"키를 테스트 중이므로 아무리 보더라도 루프 유형을 교환 한 후에도 항상 오류가 발생합니다.

do/while은 NOT이 루프를 사용합니다. 일반 while 루프를 사용하고 대신 isset()을 사용하십시오.

$length = 0; 
while(isset($a[$length])) { $length++; } 
관련 문제