PHP: правильный способ объявить переменную перед использованием в цикле - PullRequest
7 голосов
/ 28 октября 2008

У меня есть переменная, которая встроена в цикл. Что-то вроде:

$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";

Если $ str = "" опущено, я получаю уведомление о неопределенной переменной, но я подумал, что php автоматически объявляет переменную при первом обнаружении необъявленной переменной?

Как мне сделать это правильно?

Ответы [ 4 ]

15 голосов
/ 28 октября 2008

Вы получаете неопределенную переменную, потому что объединяете ее значение с другим значением.

Эквивалент

$str = $str . "something";

Итак, он не может сказать, каково начальное значение. Это эквивалент этого:

$str = [undefined value] . "something";

Каков результат объединения [undefined value] и "something"? Переводчик не может сказать ...

Итак, сначала вы должны поместить "" в переменную, чтобы инициировать значение переменной, как вы это сделали.

НТН

8 голосов
/ 28 октября 2008

Если вам действительно нужно сделать его чище, вы можете сделать:

for($i = 0, $str = ''; $i < 10; $i++) $str .= "something";

Но то, что у вас есть, это то, что я обычно делаю. vlceBerg это хорошо объясняет.

4 голосов
/ 28 октября 2008

Безопаснее не использовать функцию автоматического объявления - поэтому он выдает уведомление. Уведомление является самым низким уровнем предупреждения и не будет отображаться по умолчанию. Большинство старых приложений PHP будут выдавать много уведомлений, если вы включите их.

2 голосов
/ 28 октября 2008

Переменные PHP, которые автоматически объявляются, регистрируются как неопределенные, поэтому вы получаете уведомление.

Обычно лучше объявить переменные PHP перед их использованием, хотя многие из нас, ленивые среди нас, включая меня, не всегда делают это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...