Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: heredoc не работает, как аргумент функции
на момент определения переменной $heredoc, откуда берётся переменная $row? какое у неё значение? Должен вылезти notice, а вместо переменной берётся null
arhon88 пишет:
а как инициализировать?
если написать $heredoc = '';
то он и будет выводить в цикле пустоту.
Вариант 1. Переменную определять внутри функции. Тогда надо использовать global или пусть сама функция передаёт значение переменной. Ну или передавать ссылку на переменную.
Вариант 2. Пусть функция возвращает массив значений, а уже вне функции мы определим переменную.
Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2015
Помог: 0 раз(а)
Ts.Saltan
спасибон! теперь все стало на свои места
arimanecro
Отправлено: 05 Июня, 2015 - 11:20:28
Частый гость
Покинул форум
Сообщений всего: 209
Дата рег-ции: Май 2014
Помог: 0 раз(а)
Ts.Saltan
а разве второй способ будет работать?
$row= test2(); // здесь пропущен аргумент $heredoc, сразу показывает ошибку Warning: Missing argument 1 for test2()
и где while?
=========
и первый способ бессмысленный, так как он не позволяет использовать функцию, как она задумывалась, а именно, тупо подставлять разные хередоки. А в Вашем случае, хередок всегда будет один, и чтобы подставить другой хередок, нужно дублировать ф-ию, давать ей др.название и вставлять др.хередок
Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013 Откуда: Belarus
Помог: 22 раз(а)
arimanecro пишет:
разве второй способ будет работать?
Точно, у функции тест2 надо убрать аргумент
arimanecro пишет:
и где while?
Если результат содержит одну строку, цикл не нужен. А судя по коду первого сообщения, даже если результатов несколько, переменная heredoc всё равно переопределится.
Если надо вернуть несколько строк без цикла - mysqli_fetch_all
arimanecro пишет:
и первый способ бессмысленный
Такой подход с heredoc и с мешаниной php и html кода в принципе не верный. Надо в таком случае использовать шаблонизаторы.
arimanecro пишет:
он не позволяет использовать функцию, как она задумывалась
Откуда ж мне знать, для чего она там кем-то задумывалась? Каков был вопрос, на такой и ответил.
likvidator
Отправлено: 06 Июня, 2015 - 15:57:25
Посетитель
Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.