ホームページ > バックエンド開発 > PHPチュートリアル > foreach トラバーサルがエラーを報告するのはなぜですか?

foreach トラバーサルがエラーを報告するのはなぜですか?

WBOY
リリース: 2016-06-13 12:25:23
オリジナル
1911 人が閲覧しました

foreach トラバーサルでエラーが発生するのはなぜですか?
ネチズンの投稿を見て、自分でも試してみたところ、華さんの言う通りにうまくいきましたが、理由はわかりません。アドバイスをお願いします。
$blog=array(
array(
"titledata"=>"titleMM",
"bodydata"=>"bodyMM"
),
array(
"titledata"=>"titleGG",
"bodydata"=>"bodyGG"
)
//エラー
foreach( $blog as $b)
{
$b['titledata']="BB"
}
print_r($ blog); //表示 Array ( [0] => Array ( [titledata] => titleMM [bodydata] => bodyMM ) [1] => Array ( [titledata] => titleGG [bodydata] = > bodyGG ))、期待した結果が得られません。
//正しい
for($i=0;$i{
$blog[$i]['titledata']="title" ;
$blog[$i]['bodydata']="body";
}
print_r($blog);// 期待される結果を取得します: Array ( [0] => [タイトルデータ] => タイトル [ボディデータ] => ボディ ) [1] => 配列 ( [タイトルデータ] => タイトル [ボディデータ] => ボディ )
------解決策----------------------


理由は非常に簡単です、foreach( $ blog as $b) がコピーを取得します。コピーを書き換えても、元の

$blog=array( <br />  array( <br />    "titledata"=>"titleMM", <br />    "bodydata"=>"bodyMM" <br />  ), <br />  array( <br />    "titledata"=>"titleGG", <br />    "bodydata"=>"bodyGG" <br />  ) <br />); <br /><br />foreach($blog as &$b) <br />{ <br />  $b['titledata']="BB"; <br />  $b['bodydata']="CC"; <br />} <br />print_r($blog);
ログイン後にコピー
には影響しません。

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