我试图避免使用array_count_values(太慢)来计算出现次数,所以我使用的是foreach循环但是我仍然在下面收到此错误消息,即使结果打印正确!!!
PHP注意:未定义的偏移量:第5行的0 PHP堆栈跟踪:
$somearray=array(0,1,2,3,4,5,6,0,1,2,3,4,0,1,2);
$frequency=array();
foreach($somearray as $key => $val) {
$frequency[$somearray[$key]]++; //THIS IS LINE 5
}
print_r($frequency);
尽管抛出了所有抛出的错误消息,它仍能正确打印:
Array
(
[0] => 3
[1] => 3
[2] => 3
[3] => 2
[4] => 2
[5] => 1
[6] => 1
)
答案 0 :(得分:3)
通知“Undefined offset:0”是详细的,在 中缀增量 操作之前未设置某些索引(就地添加, $<var>++
)虽然常规作业不会导致通知。
要取消通知:
...
@$frequency[$val]++;
要避免 注意:
...
$frequency[$val] = (isset($frequency[$val]))? $frequency[$val]+1 : 1;
良好的做法是避免通知,警告,错误......