配列を走査するための foreach とは何ですか?
foreach を使用して配列を走査するとき、概念が不明瞭なために間違いを犯すことがよくあります。ここでは、一般的に使用される foreach 操作について簡単に紹介します。
(PHP 4、PHP 5、PHP 7)
foreach 構文構造は、配列を走査する簡単な方法を提供します。 foreach は配列とオブジェクトにのみ適用できます。他のデータ型の変数、または初期化されていない変数に適用しようとすると、エラー メッセージが表示されます。
配列を走査するための foreach の 2 つの構文:
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
最初の形式は、指定された array_expression 配列を走査します。 各ループでは、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に進みます (つまり、次のループで次のセルが取得されます)。
2 番目の形式でも同じことを行いますが、現在のユニットのキー名が各ループの変数 $key にも割り当てられる点が異なります。
PHP 5 以降、オブジェクトをトラバースすることも可能です。
注: foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。これは、foreach ループの前にreset()を呼び出す必要がないことを意味します。
注: 配列が参照されない限り、foreach は配列自体ではなく、指定された配列のコピーを操作します。 foreach は配列ポインターにいくつかの副作用をもたらします。リセットされない限り、foreach ループ中またはループ後に配列ポインターの値に依存しないでください。
PHP 5 以降では、$value の前に & を追加することで配列の要素を簡単に変更できます。このメソッドは、値をコピーするのではなく、参照によって割り当てます。
<?php header("Content-Type:text/html; charset=utf-8"); $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) unset($value); // 最后取消掉引用 ?>
$value への参照は、走査される配列が参照できる場合 (たとえば、変数である場合) にのみ使用できます。次のコードは実行されません:
<?php foreach (array(1, 2, 3, 4) as &$value) { $value = $value * 2; } ?>
注: 配列の最後の要素の $value 参照は、foreach ループの後も保持されます。 unset() を使用して破棄することをお勧めします。 foreach は、「@」を使用してエラー メッセージを抑制する機能をサポートしていません。
以下は、php foreach が配列を走査する例です
1。走査される配列は 1 次元配列であり、これは比較的単純です。単一の配列の場合は、次のように 2 つの方法で表現されます。
<?php header("Content-Type:text/html; charset=utf-8"); $array = array("PHP中文网","百度","搜狗","www.php.cn"); foreach ($array as $value){ echo $value."<br>"; } echo "<br>"; foreach ($array as $key =>$value){ echo $key."--".$value."<br>"; } ?>
出力結果は、
2 となります。 1 次元の連想配列の場合は、次のように表示されます。キーの値が異なること:
<?php header("Content-Type:text/html; charset=utf-8"); $array = array("网站1"=>"PHP中文网","网站2"=>"百度","网站3"=>"搜狗","网址"=>"www.php.cn"); foreach ($array as $value){ echo $value."<br>"; } echo "<br>"; foreach ($array as $key =>$value){ echo $key."--".$value."<br>"; } ?>
<?php header("Content-Type:text/html; charset=utf-8"); $array = array( array("1","PHP中文网"), array("2","www.php.cn"), array("3","百度"), array("4","搜狗") ); foreach ($array as $value){ print_r($value); echo "<br>"; } ?>
<?php header("Content-Type:text/html; charset=utf-8"); $array = array( array("1","PHP中文网"), array("2","www.php.cn"), array("3","百度"), array("4","搜狗") ); foreach ($array as $key =>$value){ echo "key =".$key."<br>"; print_r($value); echo "<br>"; } ?>
<?php header("Content-Type:text/html; charset=utf-8"); $array = array( array("id"=>"1","name"=>"PHP中文网"), array("id"=>"2","name"=>"www.php.cn"), array("id"=>"3","name"=>"百度"), array("id"=>"4","name"=>"搜狗") ); //二维数组定义 //获取某一列作为一维数组 $idArr = array();//id列 $nameARR = array();//name列 foreach($array as $key => $value){ $arr = $value["id"]; $idArr =$arr; //存入ID列 $name = $value["name"]; $nameARR = $name; //存入name列 print_r($idArr); print_r($nameARR); } ?>
foreach ループを使用して走査する: インデックス配列と連想配列"
以上がPHP配列におけるforeach配列トラバーサルの使用例を詳しく解説(画像)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。