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

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

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

ネチズンの投稿を見て、自分でも試してみたところ、華さんの言う通りにうまくいきましたが、理由はわかりません。アドバイスをお願いします。
$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); // 配列 ( [0] => Array ( [titledata] => titleMM [bodydata] => bodyMM ) [1] => ; 配列 ([titledata] => titleGG [bodydata] => bodyGG)) の場合、期待した結果が得られません。
//正しい
for($i=0;$i{
$blog[$i]['titledata']="title"; ['bodydata']="body"
}
print_r($blog);// 期待される結果を取得します: Array ( [0] => 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) 得られるのはコピーです。コピーに書き換えても、オリジナルには影響しません

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

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