сообщение об ошибке при попытке распечатать следующую позицию в цикле?Неопределенное смещение при попытке получить следующую позицию в php
$coba = "testing";
for($h=1;$h<(count($coba));$h++){
echo $coba[$h+1];
}
сообщение об ошибке при попытке распечатать следующую позицию в цикле?Неопределенное смещение при попытке получить следующую позицию в php
$coba = "testing";
for($h=1;$h<(count($coba));$h++){
echo $coba[$h+1];
}
Если это ваш код, вы получите эту ошибку:
$coba = "testing";
for($h=1;$h<strlen($coba);$h++){
echo $coba[$h+1];
}
Причина в том, что вы пытаетесь напечатать что-то, что не существует.
Вы увеличиваете $ h на число, большее, чем массив. Вот почему вы получаете ошибку смещения.
'$ h' никогда не увеличивается с этим условием. –
Оригинальный код неверен здесь ->for($h=1;$h<(**count**($coba));$h++){
Смотрите справочное руководство PHP на разницу в счете() и STRLEN().
отсчет ($ Коба) составляет 1
StrLen ($ Коба) является 7
Если вы используете StrLen, то код будет правильно перебрать строки:
$coba = "testing";
for($h=1;$h<strlen($coba);$h++){
echo $coba[$h+1];
}
Теперь по поводу ошибка, о которой вы упомянули, когда я запускаю выше, я получаю:
PHP Notice: Uninitialized string offset: ...
Две проблемы здесь с йо ur оригинальный код. Поскольку я не знаю вашего первоначального намерения, я могу только догадываться о том, что вы пытались сделать с циклом.
Проблема № 1: индексация в строка должна начинаться с 0, а не 1
Проблема № 2: $ Коба [$ ч + 1] будет недействительным индексом в конце массива в час + 1 ,
Вы можете настроить индексирование час + 1, чтобы быть просто ч или изменить цикл в цикле 1 меньше по for($h=0;$h<(strlen($coba)-1);$h++){
Таким образом, окончательный код может выглядеть следующим образом:
$coba = "testing";
for($h=0;$h<(strlen($coba)-1);$h++){
echo $coba[$h+1];
}
Какие выходы при пробел:
esting
Возможно, вы захотите предоставить ссылки на 'count()' и 'strlen()', так как вы упомянули «справочник по PHP» –
ну .. это только часть моего кода. Я не показываю полный код. Большое спасибо за комментарий .. я попробую :) –
строка обрабатывается как массив символов, индекс от 0, а не 2 –
Что вы хотите сделать? – C2486