Необходимо ли инициализировать / объявлять переменную в PHP?

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

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

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

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

я делюсь демо-код для того, что я на самом деле имею в виду:

$cars = null;

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

echo $cars;

или

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

echo $cars;

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

3 ответов


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

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

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

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

редактировать

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


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

обратите внимание: неопределенная переменная: автомобили

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

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


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

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

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