PHP foreach() の使用法と例
元の URL:
http://blog.csdn.net/china_skag/article/details/6444727
PHP 4 では foreach 構造が導入されました。 Perl や他の言語とよく似ています。これは、配列を反復処理するための単なる便利な方法です。 foreach は配列でのみ使用でき、他のデータ型または初期化されていない変数で使用しようとするとエラーが発生します。 2 つの構文があり、2 番目の構文は重要度は低いですが、最初の構文を拡張したものです。
foreach (array_expression as $value)
ステートメント
foreach (array_expression as $key => $value)
ステートメント
最初のフォーマット トラバーサルarray_expression 配列。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
2 番目の形式でも同じことを行いますが、現在のセルのキー名が各ループの変数 $key にも割り当てられる点が異なります。
まず最初のステートメントを見てみましょう。このステートメントは比較的単純です。array_expression は配列の値を順番に取得して保存します。 $val。変数では、このメソッドは配列内の値のみを取得できますが、配列の添字インデックス値は取得できません。例:
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");
foreach( $ MyRray as $ value) {
Print ($ val. "");
}
結果は次のように出力されます。 Val1 Val2 Val3
の値を取得することに加えて、最初の形式と同様に配列内の要素を取得することもできますが、2 番目の形式でも要素のインデックス値を取得し、それを $key 変数に保存できます。配列のインデックス値が手動で設定されていない場合は、システムのデフォルトに戻ります。設定値、
正の例を見てください:
まず単純な 1 次元配列を見てください:
$myArray=array("1"=>"val1 "," 2"="val2","3"=>"val3");
foreach($myArray as $key=>$val) {
print($key."=> ". $val.";");
}
プログラムは次のように出力します: 1=>val1;2=>val2;3=>val3; 次に見てみましょう。 2 次元配列走査の場合、プログラムは次のとおりです。
$myArray=array(
"1"=>array("11"=>"val11","12"=>> "val12","13"=>"val13"),
"2"=>array("21"=>"val21","22"=>"val22","23"= >"val23"),
"3"=>array("31"=>"val31","32"=>"val32","33"=>"val33")
);
print("
");
foreach($myArray as $key=>$val) {
print("- ".$key."< ;/li>");
if (is_array($val)) { //$val の値が配列であるかどうかを判断し、配列である場合は、下位レベルのトラバーサルを開始します
print(" ") ;
foreach($val as $key=>$val) {
print("- ".$key."=>gt;".$val."
") ;
1
11=>val11
12=>val12
13=>val13
2
21=>val2 1
22=> val22
23=>val23
3
31=>val31
32=>val32
33=>val33
と - は、実線のドットと中空のドットを表示するラベルです。
上記は2次元配列なので、1回目の走査後に得られる$valの値も配列になるので、2段目の配列走査の判定を走査に追加しました。
パズルを解く別の例
$a = array("1"=>"中文"," 2"=>"数学","3"=>"英語");
$b = array("1"=>"95","2"=>"99","3 "=>"92");
foreach($a as $key=>$value){
echo $value;
echo $b[$key]."
" ;
}
?>
問題は、なぜ配列 $b の値を出力するのに $b[$value] の代わりに $b[$key] を使用するのかということです。
これはなぜですか?
$a = array("1"=>"中国語","2"=>"数学","3"=>"英語");
上のものは下のものと全く同じです
$a[1]="中国語";
$a[2]="数学"
$a[3]="英語"
出力した配列上記はどのように出力されますか?
echo $a[1];
ですよね?
迷いがなければ、続けてみましょう! ! ! !
———————————————————————————————————————— ———
単純に foreach を入力します
形式は次のようになります foreach (配列名を添え字 => 値)
添え字は $a[1 ] 上で、ここの 1 は配列マークの添字です!
なぜ $a[$key] がこのように出力されるのか理解できたはずです
どのように変更しても、配列の出力メソッドは常に $a[ になることを覚えておいてください。 1]、いいえ、$a['言語']
です====================== ====== =====================================
foreach () には 2 つの用途があります:
1: foreach(array_name as $value){
ステートメント;
}
ここでの array_name は、各ループ内で走査する配列の名前です。 array_name 配列の現在の要素の値は $value に割り当てられ、配列内の添字は 1 ステップ下に移動します。つまり、次のループは次の要素を取得するために戻ります。
2: foreach(array_name as $key => $value){つまり、現在の要素の値を $value に割り当てることに加えて、現在の要素のキー値が各ループの変数 $key にも割り当てられます。キー値には、添え字値または文字列を指定できます。たとえば、book[0] の「0」=1、book[id] の「id」==001。