É uma boa prática para inicializar os elementos em uma matriz associativa em php?
-
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?
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];
}