Нужно ли определять массив перед добавлением в него?

Тривиальный вопрос.

Предположим, у меня есть следующий код

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$words = ['Apple', 'Avocado', 'Banana', 'Blueberry'];

$dict = [];
// build a dictionary keyed on the first letter
foreach ($words as $word) {
$letter = $word[0];
// is this condition necessary?
if (!isset($dict[$letter])) {
$dict[$letter] = [];
}
$dict[$letter][] = $word;
}
?>

Обычно, когда я создаю словарь, перед добавлением записи я гарантирую, что массив существует, как показано в моем примере.

Я всегда думал, что в противном случае появится предупреждение, но, похоже, это не так.

Так необходимо ли условие IF?

1

Решение

От официальная документация по массивам (выделение мое):

$arr[key] = value;

$arr[] = value;

// key may be an integer or string

// value may be any value of any type

Если $arr еще не существует, он будет создан, так что это также
Альтернативный способ создания массива. Эта практика однако
обескуражен, потому что если $arr уже содержит некоторое значение (например, строку
из переменной запроса), то это значение останется на месте и []
может фактически означать оператор доступа к строке. Всегда лучше
инициализировать переменную прямым присваиванием.

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector