我发现自己在PHP中使用关联数组做了很多事情。
我这样做:
foreach ($item as $key=>$value) {
if ($arr[$key] == null) {
$arr[$key] = 0;
}
$arr[$key] += $other_arr[$value];
}
但后来我意识到如果我排除初始化$ arr [$ key]的行,它可以正常工作,大概是因为它是null,它被视为与0相同。
在php中使这种假设安全吗?如果它是安全的,这是一个好主意吗?
答案 0 :(得分:7)
这是安全的,但我建议不要这样做。 如果您将错误报告提交到E_NOTICES,您将看到您的代码产生了大量错误,掩盖了任何真正的错误(例如错误的变量名称)。
你应该做的是:
if (!isset($arr[$key]))
$arr[$key] = 0;
这不会引发通知(但要小心不要在isset()内错误输入$ arr。)
答案 1 :(得分:0)
从php 7
开始,您现在可以执行以下操作:
foreach ($item as $key=>$value) {
$arr[$key] = ($arr[$key] ?? 0) + other_arr[$value];
}