Смещение неинициализированной строки при расчете длины строки без использования 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 ().

выход был

Примечание: смещение неинициализированной строки: 35 в C: \ xampp \ htdocs \ Neha \ ProgramsFromClass \ 10_reverse_string.php в строке 7
Длина = 35
Науок ХГНИС АНЭ МА Я УЗНАЮ ОЛЛЕХ

Что вызывает уведомление и как я могу от него избавиться?

2

Решение

Ваш цикл неверен. Вы увеличиваете свой $length ДО вы начинаете использовать его, и бежите от конца строки. Поэтому вы тестируете смещения, 1,2,3,...n, где n находится за концом строки.

И поскольку вы тестируете несуществующий ключ «массива», независимо от того, как вы на него смотрите, вы всегда получите ошибку, даже после того, как поменяете местами типы циклов.

делать / пока НЕ цикл, чтобы использовать для этого. Вы хотите равнину while цикл, и использовать isset() вместо:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]