ホームページ >バックエンド開発 >PHPチュートリアル >$key => $value としての PHP foreach の 2 つの使用法
この記事では、$key => $value として PHP の foreach の 2 つの使用法を紹介します。これは、必要な友達に参照してもらえるように共有します。 1. foreach 構文の紹介。
PHP 4 以降には、配列を走査するための便利な方法である foreach 構造が含まれています。 foreach は配列でのみ使用でき、他のデータ型または初期化されていない変数で使用しようとするとエラーが発生します。構文は 2 つあり、2 番目の構文は最初の構文を拡張したものです。 foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
最初の形式は、指定された array_expression 配列を反復処理します。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
2 番目の形式は同じことを行います
が、現在のセルの値に加えて、各ループでキー値も変数 $key
$arr = array("1"=>"111","2"=>"222","3"=>"333"); foreach($arr as $key=>$value) { echo $key."=>".$value."\n"; }
结果如下: 1=>111 2=>222 3=>333ここでのキー値は配列の添字として理解できます。配列要素 a[2] の添字は 2 です。
foreach の実行が開始されると、配列内のポインターが自動的にポイントされます。最初のユニットへ。これは、foreach ループの前にreset()を呼び出す必要がないことを意味します。 while ループにはリセットが必要です。以下の 2 つのコードはまったく同じように機能します。
1. while ループを使用します$arr = array("one", "two", "three"); reset ($arr); while (list(, $value) = each ($arr)) { echo "Value: $value<br>\n"; }
2. foreach を使用します
foreach ($arr as $value) { echo "Value: $value<br>\n"; }
また、foreach は配列自体ではなく、指定された配列のコピーを操作することに注意してください。したがって、 each() を構築しても、元の配列ポインタは変更されず、配列単位の値は影響を受けません。
1. foreach での参照の使用。 通常、foreach($arr as $value)の$arrと$valueはコピーであり、外部要因の影響を受けません、つまり
$arr = array(0,1,2,3,4,5); foreach($arr as $value){ $arr = array(); echo $value; }
结果是:12345しかし、$arrが参照である場合、状況は異なります。問題を説明すると
$arr = array(0,1,2,3,4,5); $arr = &$arr; foreach($arr as $value){ $arr = array(); echo $value; }
结果是: 0これは、ループで使用される $arr が、コピーを作成するのではなく、元のデータを直接ポイントしているためです。 $value が参照であり、$arr が参照ではない場合、結果は同じです。 同様に、$value はコピーではなく元のデータを指します
$arr = array(0,1,2,3,4,5); foreach($arr as &$value){ $arr = array(); echo $value; }
结果是: 0別の特殊な状況、つまり $arr がグローバルとして定義されている 変数の場合、$arr も参照になります
global $arr; $arr = array(0,1,2,3,4,5); foreach($arr as $value){ $arr = array(); echo $value; }
结果是: 02. 配列を 2 回ループする場合、このように記述してはなりません
foreach($arr as &$value){} foreach($arr as $value){}これにより、2 回目のループの結果が正しくなくなります(おそらく PHP のバグです)。代わりに以下を使用できます:
//solution 1 foreach($arr as &$value){} unset($value); foreach($arr as $value){} //solution 2 foreach($arr as &$value){} foreach($arr as &$value){} //solution 3 foreach($arr as &$value){} $arr2 = $arr; foreach($arr2 as $value){}関連する推奨事項:
PHP での foreach の使用法と例の詳細な説明
以上が$key => $value としての PHP foreach の 2 つの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。