Нужно ли инициализировать/декларировать переменную в PHP?

Цель этого вопроса - только получить знания или информацию для меня и многих, подобных мне.

Итак, мой вопрос:

Нужно ли инициализировать/объявить переменную перед циклом или функцией?

Задавая этот вопрос для моей путаницы, потому что, если я инициализирую/объявляю переменную до или после моего кода, все еще работает.

Я делюсь демо-кодом на то, что я на самом деле подразумеваю:

$cars = null;

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

ИЛИ

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

Оба кода работают одинаково для меня, поэтому необходимо инициализировать/объявить переменную в начале?

Ответы

Ответ 1

PHP не требует этого, но рекомендуется всегда инициализировать переменные.

Если вы не инициализируете свои переменные значением по умолчанию, PHP-движок будет выполнять тип приведения в зависимости от того, как вы используете переменную. Это иногда приводит к неожиданному поведению.

Короче говоря, по-моему, всегда устанавливайте значение по умолчанию для своих переменных.

P.S. В вашем случае значение должно быть установлено на "" (пустая строка), а не на null, так как вы используете его для объединения других строк.

Изменить

Как отмечали другие (@n-dru), если вы не установите значение по умолчанию, будет создано уведомление.

Ответ 2

Вам лучше назначить пустую строку $cars = '';, в противном случае (если у вас есть отчет об ошибках), вы должны увидеть уведомление:

Примечание: Undefined variable: cars

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

Кроме того, используя такие редакторы, как Aptana и т.д., вы можете нажать F3, чтобы узнать, откуда взялась данная переменная. И так удобно, что он инициализируется где-то. Таким образом, отладка -гольно также лучше иметь очевидное место рождения переменной.

Ответ 3

Это зависит: если вы объявляете переменную вне функции, она имеет "глобальную область", это означает, что ее можно получить только вне функции.

Если переменная объявлена ​​внутри функции, она имеет "локальную область" и может использоваться только внутри этой функции.    (http://www.w3schools.com/php/php_variables.asp)

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