ホームページ  >  記事  >  バックエンド開発  >  foreach ループ配列がポインタを 2 番目の位置に 1 回だけ移動する理由を解決します。

foreach ループ配列がポインタを 2 番目の位置に 1 回だけ移動する理由を解決します。

WBOY
WBOYオリジナル
2016-08-20 09:04:111122ブラウズ

$countries = [

リーリー

];
foreach ($countries as $key => $value) {

リーリー

}
?>

foreach ループ配列がポインタを 2 番目の位置に 1 回だけ移動する理由を解決します。

返信内容:

$countries = [

リーリー

];
foreach ($countries as $key => $value) {

リーリー

}
?>

foreach ループ配列がポインタを 2 番目の位置に 1 回だけ移動する理由を解決します。

定義されています$countries和foreach循环中的$countries指向的是同一个zval变量, 因为PHP要节省内存,不需要同样的数据存两份。这时候zval中的refcount为2. 但是如果在循环中改变$countries、たとえば

リーリー

または

リーリー

参照を渡し、copy-on-write 操作, 就是写时复制. 会将zval复制一份, 并把原来的zval的refcountマイナス 1 をトリガーする値を割り当てます。

ループするたびに、current が実行されるため、ループするたびに実行されますcopy-on-write。したがって、current が新しい zval を操作するたびに

この答えを一緒に探しています

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