Нужно ли инициализировать/декларировать переменную в 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)
Но кажется, что переменная "автомобили", которую вы определили вне функции, работает для вашей функции даже без глобального ключевого слова...