Вызывает ли array () без аргументов? - PullRequest
6 голосов
/ 11 августа 2011

Из моей базы знаний C ++ я стремлюсь инициализировать массивы в PHP, набрав:
$foo = array()
Или я могу в любом случае принести этот кастом из Javascript, это какое-либо использование?
Поскольку в этом нет проблем:
$foo[45] = 'bar' без инициализации в виде массива, я полагаю, нет.

PS: улучшение тегов действительно хорошо

Ответы [ 7 ]

6 голосов
/ 11 августа 2011

Да, это так.По крайней мере, это улучшает читабельность кода (так что вам не нужно гадать ', откуда берется $foo? Он пустой или в нем что-нибудь есть? `.

Также будет предотвращено 'Variable '$a' is not set уведомлений или Invalid argument passed to foreach в случае, если вы фактически не назначаете никаких значений элементам массива.

1 голос
/ 11 августа 2011

Это хорошая практика. Рано или поздно вы столкнетесь с ситуацией, когда вы захотите сделать что-то вроде этого:

array_push($foo, '45');

Который бросит уведомление, тогда как:

$foo = array();
array_push($foo, '45');

не будет.

1 голос
/ 11 августа 2011

с инициализацией:

$myArray = array();
if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;

Без инициализации:

if ($myBoolean) {
  $myArray['foo'] = 'bar';
}
return $myArray;

В первом случае ясно, что вы хотите, если $ myBoolean имеет значение false. Во втором случае это не так, и php может выдать предупреждение, если вы позже попытаетесь использовать $ myArray. Очевидно, это упрощенный случай, но в сложном случае «если» может быть на несколько строк ниже и / или даже не существовать, пока кто-то не придет и не добавит его позже, не осознавая, что массив не был инициализирован.

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

1 голос
/ 11 августа 2011

У меня были проблемы (в более старых версиях PHP, недавно не пробовал), когда я работал с массивом с помощью array_push или чего-то еще, и PHP рявкнул на меня.Как правило, в этом нет необходимости, но это может быть безопаснее, особенно если вы имеете дело с устаревшим кодом;возможно, вы ожидаете, что $ foo будет массивом, но на самом деле это логическое значение?Последуют плохие вещи.

1 голос
/ 11 августа 2011

Инициализация переменных перед использованием - хорошая практика.Даже если это не требуется.

1 голос
/ 11 августа 2011

@ petruz, это лучший способ сделать это, не только он избавит вас от неприятных сообщений об ошибках PHP, говорящих, что функция ожидает, что параметр является массивом, но, ИМХО, это лучший способ написания кода.Я инициализирую переменную перед ее использованием

1 голос
/ 11 августа 2011

Любой метод вполне приемлем.Как уже упоминалось, эта практика использования конструкции array() обычно переносится с другого языка, который вы инициализируете перед заполнением.С помощью PHP вы можете инициализировать пустой массив, а затем заполнить его позже, или вы можете просто установить массив по присваиванию, например $variableName[0] = "x";.

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