2017-10-20 20 views
-1

私はforeachループを使用していますので、array_count_values(遅すぎます)を使用しないようにしています。結果は正しく出力されますが、このエラーメッセージが表示され続けます。PHP:foreachループのエラーは何ですか?

PHPのお知らせ:オフセット未定義:ライン上の5 PHPスタックトレースで0:

$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; 

を.. 。

関連する問題