Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2019, 23:06   #1
xtranoob
Новичок
Джуниор
 
Регистрация: 02.11.2019
Сообщений: 3
По умолчанию Помогите ньюбу плз, Undefined Offset

Привет всем,
Только начинаю изучать php, решаю задачки, вникаю в логику. Никак не пойму, почему вылазит ошибка Undefined Offset. Код:

Код:
function arrayFill ($value, $qty)   {
    $arr = [];
    for ($i = 0; $i < $qty; $i++) {
        for ($j = 0; $j <= $i; $j++)    {
            $arr[$i] .= $value;
        }
    }
    return $arr;
}

var_dump(arrayFill('x', 5));
Ругается на переменную $i в массиве $arr. Мы ведь объявляем $i в первом цикле? Как правильно эту конструкцию оформить?

Благодарю за внимание!
xtranoob вне форума Ответить с цитированием
Старый 02.11.2019, 23:40   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

$a .= $b это $a = $a . $b, а у вас $а не инициализировано.
Цитата:
Сообщение от xtranoob Посмотреть сообщение
Как правильно эту конструкцию оформить?
https://www.php.net/manual/en/function.str-repeat.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.11.2019, 06:12   #3
xtranoob
Новичок
Джуниор
 
Регистрация: 02.11.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
$a .= $b это $a = $a . $b, а у вас $а не инициализировано.
Так инициировано ведь в цикле? Или как эту переменную объявить по другому,
в хелпе про это ничего нету...
xtranoob вне форума Ответить с цитированием
Старый 03.11.2019, 11:12   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как угодно, $arr[$i] = '' например.

Но часто просто не надо делать лишние изменения значения, можно сразу установить нужное, как и тут
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
https://www.php.net/manual/en/function.str-repeat.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.11.2019, 16:46   #5
xtranoob
Новичок
Джуниор
 
Регистрация: 02.11.2019
Сообщений: 3
По умолчанию

Благодарю за помощь, ошибка пропала, логика кодинга стала чуточку более понятной

А насколько безопасно (или критично) оставлять такие конструкции без инициализации в php версий 7+ ? Могут какие-то конфликты возникнуть с другими частями кода?
xtranoob вне форума Ответить с цитированием
Старый 03.11.2019, 17:26   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

скорее всего будет работать, но потом вы либо отключите предупреждения, либо будете их игнорировать, и пропустите и другие предупреждения.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Notice: Undefined offset: 0 - PHP helken PHP 13 29.01.2017 22:59
Ошибка Notice: Undefined offset: 2 Ruska882009 Помощь студентам 1 18.11.2009 15:16
Помогите убрать "Undefined offset" kirill555 PHP 5 31.10.2007 13:44
VC++ Помогите ньюбу СВой Общие вопросы C/C++ 9 08.10.2007 17:24