ホームページ  >  記事  >  バックエンド開発  >  PHP ループ ステートメント for() と foreach() の使用法の違いの概要_PHP チュートリアル

PHP ループ ステートメント for() と foreach() の使用法の違いの概要_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:16:38926ブラウズ

for ループは、PHP で最も複雑なループ構造です。その動作は C 言語の動作に似ています。 for ループの構文は次のとおりです:

for (expr1; expr2; expr3) ステートメント
最初の式 (expr1) は、ループが開始される前に無条件に 1 回評価されます。
expr2 は各ループの前に評価されます。値が TRUE の場合、ループが続行され、ネストされたループ ステートメントが実行されます。値が FALSE の場合、ループは終了します。

expr3 は各ループの後に評価 (実行) されます。
すべての式は空にすることができます。空の expr2 は、ループが無限に継続することを意味します (C と同様、PHP はその値を TRUE と見なします)。これは、思ったほど役に立たないかもしれません。ループを終了するには、for 式の真偽チェックを使用する代わりに、break ステートメントを使用することが多いからです。
次の例を考えてみましょう。これらはすべて 1 から 10 までの数字を表示します:

コードをコピー コードは次のとおりです:

for ($i = 1; $i <= 10; $i++) {
print $i;
}
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
$i = 1; ;) {
if ($i > 10) {
break;
}
print $i;
$i++;
}
for ($i = 1; $i <= 10; );
?>


もちろん、最初の例 (または 4 番目) が最も普通に見えますが、多くの状況では for ループで空の式を使用すると便利であることがわかります。
PHP は、コロンを使用した for ループの代替構文もサポートしています。

for (expr1; expr2; expr3): state; ...; endfor;
他の言語には、配列またはハッシュ テーブルを走査するための foreach ステートメントがあり、PHP も機能します (foreach を参照)。 PHP 3 では、list() 関数と each() 関数を while ループと組み合わせて同じ効果を実現できます。例については、これらの関数のドキュメントを参照してください。 foreach
PHP 4 (PHP 3 ではありません) には、Perl や他の言語と同様に、foreach コンストラクトが含まれています。これは、配列を反復処理するための単なる便利な方法です。 foreach は配列でのみ使用でき、他のデータ型または初期化されていない変数で使用しようとするとエラーが発生します。 2 つの構文があり、2 番目の構文は、最初の構文の小規模ではありますが便利な拡張です。

foreach (array_expression_r_r as $value) ステートメント foreach (array_expression_r_r as $key => $value) ステートメント
最初の形式は、指定された array_expression_r_r 配列を反復処理します。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
2 番目の形式でも同じことを行いますが、現在のセルのキー値が各ループの変数 $key にも割り当てられる点が異なります。
注: foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。これは、foreach ループの前にreset()を呼び出す必要がないことを意味します。
注: foreach は配列自体ではなく、指定された配列のコピーを操作することにも注意してください。したがって、 each() を構築しても、元の配列ポインタは変更されず、配列単位の値は影響を受けません。
注: foreach は、「@」を使用してエラー メッセージを抑制する機能をサポートしていません。
次のコードはまったく同じように機能することに気づいたかもしれません:



コードをコピー
コードは次のとおりです: $arr = array("one", "two", " three");
reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value
n";
}
foreach ($arr as $ value) {
echo "Value: $value
n";
?>


次のコードは同じ機能です:


コードをコピーします
コードは次のとおりです: reset ($arr );
while (list($key, $value) = each ($arr)) {
echo "キー: $key; 値: $value
n";
foreach ($arr as $key = > :


$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "$ の現在値a: $v.n";
}
$ a = array (1, 2, 3, 17);
$i = 0;
foreach ($a as $v) {
print "$a[$i] => ; $v.n";
$i++;
} $a = array ( "one" => 1, "two" => 2, "three" => 3,
"seventeen" => ; 17
);
foreach ($a as $k => $v) {
print "$a[$k] => $v.n";
$a[0][0] = " ";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a として$v1) {
foreach ($v1 as $v2) {
print "$v2n";
}
}
foreach (array(1, 2, 3, 4, 5) as $v) {
print "$vn ";
}
?>


コードをコピー コードは次のとおりです:

//foreach
$tar = array (
1 => 'East',
2 => 'West',
3 => '南'、
4 =>'北'、
6 =>'南西'、
8 =>'北西'、
9 => '北と南',
10 => '東と西',
$TM = '西';
{
if( $vv == $TM )
{
echo $vv.'-'.$v.'
'
}
//echo $vv
}


//西-2
//for


コードをコピー

コードは次のとおりです:
echo '
'
for( $i=1;$i<=count( $tar ) ;$i++ )
{
if( $ tar[$i] == $TM )
{
echo $tar[$i].'-'.$i.'
';
}
}


//西-2
概要: foreach と for の結果はまったく同じですが、効率の点では foreach の方が優れています。ホームページでは、配列の長さを知る必要があります。その後、 $i++ を使用して操作します。ページ上の Foreach は配列の長さを知る必要がなく、キーと値を自動的に検出して入力できます。


http://www.bkjia.com/PHPjc/325875.html

www.bkjia.com

tru​​e

技術記事 for ループは、PHP で最も複雑なループ構造です。その動作は C 言語の動作に似ています。 for ループの構文は次のとおりです: for (expr1; expr2; expr3) ステートメント 最初の式 (expr1) がループ内にあります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。