PHP 配列トラバーサル foreach 構文構造と example_php の例

WBOY
リリース: 2016-06-16 08:41:00
オリジナル
740 人が閲覧しました

foreach()

PHP の foreach() 構文構造は、操作または出力配列の走査に使用されます。foreach() は、配列またはオブジェクトの走査にのみ使用できます。他のデータ型または初期化されていない変数に使用しようとすると、エラーが発生します。

文法:

foreach (array as $value)
  statement
// 或者:
foreach (array as $key => $value)

statement
ログイン後にコピー

上記の構文では、各ループは現在の単位の値を $value に代入し、配列内のポインターを 1 ステップ前に移動します。 2 番目の構文形式では、現在のユニットのキー名も各ループの変数 $key に割り当てられます。

例:

<&#63;php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
  echo $age,'<br />';
}
&#63;>
ログイン後にコピー

この例を実行した場合の出力:

18
20
25
ログイン後にコピー

配列キーを使用する

<&#63;php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
  echo $key,': ',$age,'<br />';
}
&#63;>
ログイン後にコピー

例の実行の出力:

wang: 18
li: 20
zhang: 25
ログイン後にコピー

foreach の実行が開始されると、配列内のポインターは自動的に最初の要素を指します。これは、foreach ループの前にreset() を呼び出す必要がないことを意味します。

Foreach は、配列自体ではなく、指定された配列のコピーを操作します。返された配列要素を変更しても、元の配列には影響しません (以下の例を参照)。ただし、foreach ループが最後まで実行されると、元の配列の内部ポインターは配列の末尾を指すようになります。

<&#63;php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
  $age = $age+10;
  echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
&#63;>
ログイン後にコピー

例の実行の出力:

28
30
35
Array ( [wang] => 18 [li] => 20 [zhang] => 25 ) 
ログイン後にコピー

foreach の元の配列要素を変更するには、上記の例を次のように変更します。

<&#63;php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
  $age = $age+10;
  echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
&#63;>
ログイン後にコピー
例の実行の出力:


18
20
25

Array ( [wang] => 28 [li] => 30 [zhang] => 35 ) 
ログイン後にコピー

多次元配列を走査する

foreach 構文構造は、1 次元配列を走査する場合にのみ使用できます。多次元配列を走査するには、通常、foreach ネストされた再帰を使用するか、元の配列を 1 次元配列に分割してから foreach 走査を実行します。

1 次元配列と 2 次元配列の混合の例:

<&#63;php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25));
foreach ($arr_age as $age) {
  if(is_array($age)){
    foreach ( $age as $detail) {
    echo $detail,'<br />';
    }
  } else {
    echo $age,'<br />';
  }
}
&#63;>
ログイン後にコピー

多次元配列を走査するための最も適切な処理方法は、実際のデータ構造に基づいている必要があります。

PHP 配列は HashTable テーブルを通じて実装されるため、foreach は要素が追加される順序に従って配列を走査します。インデックス サイズによって反復処理を行う場合は、for() ループを使用する必要があります。

for() は配列をループします

連続キー値の配列を操作している場合は、for() ループを使用して配列を走査することもできます。


<&#63;php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
  echo $arr_age[$i]."<br />";
}
&#63;>
ログイン後にコピー
list() と each() を組み合わせて配列を走査することもできますが、テストの結果、foreach() ほど効率的ではないことが判明しました。


上記の PHP 配列トラバーサルの foreach 構文構造と例はすべてエディターによって共有された内容であり、参考にしていただければ幸いです。また、Script Home をサポートしていただければ幸いです。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート