ホームページ >バックエンド開発 >PHPチュートリアル >foreach トラバーサルでエラーが発生するのはなぜですか?
ネチズンの投稿を見て、自分でも試してみたところ、華さんの言う通りにうまくいきましたが、理由はわかりません。アドバイスをお願いします。
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) 得られるのはコピーです。コピーに書き換えても、オリジナルには影響しません
高いですね、感心します!ありがとう。