我正在写一些建立计数器关联数组的代码。第一次遇到新项目时,它将创建一个新密钥并将其初始化为零。即:

if (!array_key_exists($item, $counters)) {
    $counters[$item] = 0;
}
$counters[$item]++;


但是,PHP实际上隐式地完成了第一部分。如果我只是做...

 $counters[$item]++;


...然后$ counters [$ item]将计算为NULL,然后在递增之前转换为0。显然,第二种方法更简单,更简洁,但是由于没有明显的可能$ counters [$ item]尚不成熟,所以感觉有些。在PHP中,一种方法是另一种吗?

为了进行比较,在Python中,惯用的方法是使用collections.Counter(想要将其自身初始化为0的键)和常规字典(想要自行初始化)。在PHP中,您只有第一个选择。

最佳答案

首先是首选。第二个选项将在您的日志中生成一条未定义$ counters [$ item]的通知。它仍然有效,但是如果您更改display_errors = On;和error_reporting = E_ALL。在您的php.ini文件中,您将在浏览器中看到这些通知。

09-28 13:39