Я нахожу, что делаю много вещей с ассоциативными массивами в 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]; }