2015-06-20 4 views
14

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

Так что мой вопрос:

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

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

Я делюсь демо-код для того, что я на самом деле означает:

$cars = null; 

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

echo $cars; 

ИЛИ

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

echo $cars; 

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

ответ

18

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

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

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

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

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

Как уже отмечалось (@ н-DRU), если не задано значение по умолчанию будет генерироваться уведомление.

+0

Null и пустой «» ... не они одна и та же? – Omer

+3

Нет, они не то же самое. Один имеет тип string, другой - null. Вы можете видеть разницу при игре с функцией is_null. 'is_null ($ null) // Возвращает true и генерирует уведомление ' empty ("") // Возвращает true' – Alexander

+0

Значит, вы имеете в виду NULL = Unassigned и "" = пустая STRING? – Omer

10

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

Примечание: Undefined переменной: автомобили

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

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

+3

Это чувство, когда вы редактируете чужой скрипт, и становится ясно, что они не включили «E_ALL» ... –

1

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

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

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

+1

Прежде всего обратите внимание, что в объявленном коде нет функции. Таким образом, не существует ключевого слова 'global'. Вы должны понять, что задается, прежде чем отвечать на вопрос. То, что вы написали, довольно вводит в заблуждение. Я хотел бы попросить вас обратиться к http://php.net/manual/en/language.variables.basics.php, чтобы понять переменные php. – Blip

Смежные вопросы