Является ли хорошей практикой инициализировать элементы в ассоциативном массиве в php?

Я нахожу, что делаю много вещей с ассоциативными массивами в PHP.

Я делал это:

foreach ($item as $key=>$value) { if ($arr[$key] == null) { $arr[$key] = 0; } $arr[$key] += $other_arr[$value]; } 

Но потом я понял, что он отлично работает, если я исключаю строку, которая инициализирует $ arr [$ key], предположительно, поскольку она имеет значение null, которое рассматривается как то же, что и 0.

Является ли такое предположение безопасным в php? И если это безопасно, это хорошая идея?

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

То, что вы действительно должны делать, это:

 if (!isset($arr[$key])) $arr[$key] = 0; 

Это не вызовет уведомления (но будьте очень осторожны, чтобы не ошибочно вводить $ arr внутри isset ()).

Начиная с php 7 вы можете сделать следующее:

 foreach ($item as $key=>$value) { $arr[$key] = ($arr[$key] ?? 0) + other_arr[$value]; }