在php中关联数组中初始化元素是一种好习惯吗?
-
08-07-2019 - |
题
我发现自己在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;
这不会引发通知(但要小心不要在isset()内错误输入$ arr。)
其他提示
从php 7
开始,您现在可以执行以下操作:
foreach ($item as $key=>$value) {
$arr[$key] = ($arr[$key] ?? 0) + other_arr[$value];
}
不隶属于 StackOverflow