É uma boa prática para inicializar os elementos em uma matriz associativa em php?

StackOverflow https://stackoverflow.com/questions/308835

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu estou encontrando-me fazendo um monte de coisas com arrays associativos em PHP.

eu estava fazendo isso:

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

Mas então eu percebi que ele funciona muito bem se eu excluir a linha que inicializa $ arr [$ key], presumivelmente desde a sua nula que é tratada como igual a 0.

Está fazendo esse tipo de seguro Assunção em php? E se é seguro, não é uma boa ideia?

Foi útil?

Solução

É seguro mas eu recomendo contra ela. Se você colocar o seu relatório de erros até E_NOTICES você verá seu código produzindo um monte deles, mascarando erros reais (como um nome de variável digitado incorretamente).

O que você realmente deve fazer é:

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

Isso não vai levantar um aviso (mas ter muito cuidado para não mis-tipo $ arr dentro isset ()).

Outras dicas

Como de php 7 agora você pode fazer o seguinte:

foreach ($item as $key=>$value) {
    $arr[$key] = ($arr[$key] ?? 0) + other_arr[$value];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top