PHP 速记加法运算符 - undefined offset

标签 php arrays foreach operators

我使用 PHP 速记加法运算符来计算特定 id 在多维数组中出现的次数:

$source['tally'] = array();

foreach ($items as $item) {
    $source['tally'][$item->getId()] += 1;
}

第一次遇到新 ID 时,它将其“tally”值设置为 1,然后每次找到该值时都会递增该值。

代码工作完美(我得到了正确的总数),但是 PHP 每次找到新的 id 时都会给我一个“ undefined offset ”通知。

我知道我可以关闭 php.ini 中的通知,但我想 PHP 不认可我的技术肯定是有原因的。

像这样动态创建新的关键点/偏移量是否被认为是不好的做法,我应该采取更好的方法吗?

请注意:为了帮助澄清以下初步反馈,我确实理解发出通知的原因。我的问题是我是否应该对此采取行动,或者只是接受这个通知。如果我的问题不够清楚,请道歉。

最佳答案

如果您只是想隐藏通知,可以使用error control operator :

$source['tally'] = array();

foreach ($items as $item) {
    @$source['tally'][$item->getId()]++;
}

但是,您通常应该初始化变量,在本例中通过在循环内添加以下代码:

if (!isset( $source['tally'][$item->getId()] ))
{
   $source['tally'][$item->getId()] = 0;
}

关于PHP 速记加法运算符 - undefined offset ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8132410/

相关文章:

javascript - onclick 切换类不起作用

php - 在 Slim v3 中全局设置模板数据

php - WordPress php sqlite 无法连接到 .db

c++ - 在 cout 语句中连接数组大小

c# - foreach 是否在每次迭代时评估数组?

javascript - nodejs - 等待 fs.stat 完成

php - 在前导数字和尾随字母之间拆分字母数字字符串

javascript - 在对象数组中添加数字

javascript - 将对象数组操作为新数组

laravel - 对于 Laravel 中的每个循环