ホームページ  >  記事  >  バックエンド開発  >  php foreach を使用して配列を走査する方法の概要_PHP チュートリアル

php foreach を使用して配列を走査する方法の概要_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:16:151021ブラウズ

PHPで配列を走査する方法はforeach、each、list、forなど色々ありますが、その中でも配列の走査においてはforeachが一番パフォーマンスが良いので私もよく使わせていただきます。配列を走査するための初心者向けの foreach の例を紹介します。


文法

foreach ( array_expression as $key => $value ) ステートメント

例 1:

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

$color=array('白' => '白' ,
「黒」 => 「黒」 、
'赤' => '赤' ,
「緑」 => 「緑」、
'黄色' => '黄色');
foreach( $color as $c) echo $c ."
"; ?>

要素の値だけでなく、キー名も foreach を通じて取得できます。構造形式は次のとおりです。

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

foreach( $color as $c) echo $c ."
";

または

foreach( $color as $key => $c) echo $key.$c ."
";

この方法と最初の方法の違いは、追加の $key があることです。つまり、現在の要素の値を $value に割り当てるだけでなく、現在の要素のキーの値も変数 $key に割り当てられます。各ループで。キー値には、添え字値または文字列を指定できます。たとえば、book[0] の「0」=1、book[id] の「id」==1。

foreach の使用に関するいくつかの問題について詳しく説明しましょう。

通常の状況では、foreach の $arr と $value($arr as $value) はコピーであり、外部要因の影響を受けません。

コードは次のとおりです$arr = 配列(0,1,2,3,4,5);しかし、$arr が参照である場合、状況は異なります。問題を説明するためにコードを使用します。
コードをコピー

foreach($arr as $value){

$arr = array();

エコー $value;
}

//12345

コードは次のとおりですコードをコピー$arr = 配列(0,1,2,3,4,5); $arr = &$arr;これは、ループで使用される $arr が元のデータをコピーするのではなく、直接ポイントしているためです。

foreach($arr as $value){
$arr = array();

エコー $value;

}

// 0

$value が参照であり、$arr が参照ではない場合、結果は同じになります。$value はコピーではなく元のデータを指します。

コードは次のとおりですコードをコピー $arr = 配列(0,1,2,3,4,5);

foreach($arr as &$value){
$arr = array();

エコー $value;

}

// 結果は: 0

別の特殊な状況があります。つまり、$arr がグローバル変数として定義されている場合、$arr も参照になります。

コードは次のとおりですコードをコピー
グローバル$arr;

$arr = 配列(0,1,2,3,4,5);

foreach($arr as $value){

$arr = array();
エコー $value;
}

// 結果は: 0

配列を 2 回ループする場合は、このように記述してはなりません

コードは次のとおりですコードをコピー
foreach($arr as &$value){}

foreach($arr as $value){}

これにより、2 番目のループの結果が不正確になります (おそらく、PHP のバグです)。次の代替手段を使用できます

コードは次のとおりですコードをコピー
//解決策 1

foreach($arr as &$value){}
unset($value);
foreach($arr as $value){}
//解決策 2
foreach($arr as &$value){}
foreach($arr as &$value){}
//解決策 3
foreach($arr as &$value){}
$arr2 = $arr;
foreach($arr2 as $value){}

foreachが未定義にならないようにするには、次のようにforeachを書いてみてください

コードは次のとおりですコードをコピー
foreach((array)$arr as $value) {}

http://www.bkjia.com/PHPjc/628708.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/628708.html技術記事 phpで配列を走査する方法はforeach、each、list、forなどたくさんありますが、その中でもforeachが配列の走査に最もパフォーマンスが良いので私もよく使っているので紹介させていただきます。以下...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。