2017-10-20 123 views
-1

我試圖避免使用array_count_values(太慢)來計算出現次數,所以我使用了一個foreach循環,但我仍然收到以下錯誤消息,即使結果打印正確!PHP:foreach循環中的錯誤是什麼?

PHP公告:未定義抵消:0在第5行 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 
) 
+3

那麼,你是從一個空數組開始的,所以在你設置它之前沒有'0'索引。 –

+1

這不是一個錯誤,它只是一個通知。 PHP說:「嘿,你試圖增加一些不存在的東西,所以我只是假設初始值爲0」 - 這正好是你想要的。 – rickdenhaan

+1

查看數組鍵是否先存在。如果不是,則初始化它。 – aynber

回答

2

通知「未定義抵消: 0「是詳細的,某些索引未設置之前中綴增量操作(就地添加,$<var>++),而定期任務不會導致通知

爲了抑制通知

... 
@$frequency[$val]++; 

爲了避免通知

... 
$frequency[$val] = (isset($frequency[$val]))? $frequency[$val]+1 : 1; 

做法是避免通知,警告,錯誤.. 。

相關問題