Это хорошая практика для инициализации элементов в ассоциативном массиве в PHP? - PullRequest
1 голос
/ 21 ноября 2008

Я много чего делаю с ассоциативными массивами в PHP.

Я делал это:

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

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

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

Ответы [ 2 ]

7 голосов
/ 21 ноября 2008

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

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

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

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

0 голосов
/ 27 сентября 2015

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

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