理解を容易にするために、ここでは $array が 1 次元の関連配列、$key が配列のインデックス、$value がこのインデックスの値であると仮定します。また、それらの名前は次のとおりです。理解しやすいように、これらは $key および $value と呼ばれます。 foreach の作業プロセスをよりよく理解できるように、配列を作成しましょう。
PHP コード
- $array = array ( 'first' => 'ibm' , 'second' , 'hp' );
次に、$array を走査するために foreach を使用する PHP サービスをシミュレートします。
PHP コード
- foreach ( $array as $key => $value )
- echo $key '=>' ;
} -
-
最初のループ、$key = 'first'、$value = 'ibm'、この時点で、実際の foreach は $array に対して実行できない操作を実行します。 :next($array) を参照してください。配列ポインタを前方に移動します (ここでの「前方」は PHP マニュアルと同じであり、私たちが通常理解している「前方」ではありません)。次に、echo ステートメントは「first=>ibm」を出力します。
2 番目のループでは、まず配列 $array の現在のポインターが配列の末尾に到達したかどうかを判断し、到達した場合はループを終了し、そうでない場合は 2 番目のループに入ります。もちろん、最初のループに入るときにもこのような判断が行われます。$array が空の配列の場合は、ループの下のステートメントが直接実行されます。このとき、$key = '秒'、'値' = 'hp'となり、next($array)の後には「秒=>hp」が出力されます。そして、配列ポインタが終端に達したと判断し、以下のステートメントが実行されます。
ここまでで、foreach ループについてある程度理解できたはずです。もう 1 つ注意すべき点は、foreach は実際に配列要素を操作するのではなく、毎回値を渡すだけであるということです。上記の例に特有の、各配列要素の後に文字列 'company' を追加する場合、$value .= 'company' 操作は機能しません。この時点では、配列要素の値は変更されません。 $array[$key] .= 'company';
のように使用する必要があります。