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

foreach トラバーサルでエラーが発生するのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 13:25:42907ブラウズ

ネチズンの投稿を見て、自分でも試してみたところ、華さんの言う通りにうまくいきましたが、理由はわかりません。アドバイスをお願いします。
cd8ff616c7b9e0b8b90f48ad1b4faef8"bodyGG"
)
);
//エラー
foreach($blog as $b)
{
$b['titledata']="BB";
$b[' bodydata']="CC";
}
print_r($blog); // 配列 ( [0] => Array ( [titledata] => titleMM [bodydata] => bodyMM ) [1] => ; 配列 ([titledata] => titleGG [bodydata] => bodyGG)) の場合、期待した結果が得られません。
//正しい
for($i=0;$i34f40b3402548c34b314fb5827c51994 Array ( [titledata] => title [bodydata] => body ) [1] => Array ( [titledata] => title [bodydata] => body ) )

ディスカッションへの返信 (解決策)
$blog=array(   array(     "titledata"=>"titleMM",     "bodydata"=>"bodyMM"   ),   array(     "titledata"=>"titleGG",     "bodydata"=>"bodyGG"   ) ); foreach($blog as &$b) {   $b['titledata']="BB";   $b['bodydata']="CC"; } print_r($blog);
Array(    [0] => Array        (            [titledata] => BB            [bodydata] => CC        )    [1] => Array        (            [titledata] => BB            [bodydata] => CC        ))
理由は簡単です、foreach( $blog as $b) 得られるのはコピーです。コピーに書き換えても、オリジナルには影響しません

高いですね、感心します!ありがとう。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。