Нужно ли объявлять массив PHP перед добавлением значений с помощью ?

$arr = array(); // is this line needed? $arr[] = 5; 

Я знаю, что это работает без первой строки, но часто используется на практике.

Какова причина? Это безопасно без него?

Я знаю, вы тоже можете это сделать:

  $arr = array(5); 

но я говорю о случаях, когда вам нужно добавлять элементы по одному.

Related of "Нужно ли объявлять массив PHP перед добавлением значений с помощью ?"

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

Например, foreach() выдает ошибку, если массив не был объявлен, и никакие значения не были добавлены к нему. Однако никаких ошибок не произойдет, если массив просто пуст, как и в случае, если бы вы его объявили.

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

С сайта PHP с сопроводительным фрагментом кода:

 $arr[key] = value; $arr[] = value; // key may be an integer or string // value may be any value of any type 

«Если $arr еще не существует, он будет создан, поэтому это также альтернативный способ создания массива».

Но, как утверждают другие ответы … вы действительно должны объявить значение для своих переменных, потому что всевозможные плохие вещи могут произойти, если вы этого не сделаете.

Php – это свободно типизированный язык. Это вполне приемлемо. При этом настоящие программисты всегда декларируют свои вары.

Подумайте о кодеров, которые придут после вас! Если вы просто видите $arr[] = 5 , вы не знаете, что может быть $arr не читая весь предыдущий код в области. Явная строка $arr = array() делает ее понятной.

это просто хорошая практика. Предположим, вы добавляли к вашему массиву внутри цикла (довольно распространенная практика), но затем обращались к массиву вне указанного цикла. Без объявления массива ваш код будет вызывать ошибки, если вы никогда не попали в цикл.

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

 //Example code foreach ($mailboxes as $mailbox){ //loop creating email list to get foreach ($emails as $email){ $arr[] = $email; } //loop to get emails foreach ($arr as $email){ //oops now we're getting other peoples emails //in other mailboxes because we didn't initialize the array } } 

Это зависит от вашей проверки ошибок. Если у вас есть отчет об ошибках в строгом виде, вы получите уведомление, но он все равно будет работать без него.

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

Согласитесь с @djdy, только одна альтернатива, которую я бы хотел опубликовать:

 <?php // Passed array is empty, so we'll never have $items variable available. foreach (array() AS $item) $items[] = $item; isset($items) OR $items = array(); // Declare $items variable if it doesn't exist ?>