1. ホーム
  2. php

[解決済み】PHP foreachでの参照渡し【重複あり

2022-04-13 07:33:03

質問

<余談
この質問には、すでにここで回答があります :
クローズド 4年前 .

このようなコードがあります。

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}

なぜこのような出力になるのか、誰か説明してください。 0 1 2 2 .

zend certification study guideより。

どのように解決するのですか?

なぜなら、2回目のループで $v はまだ配列の最後の項目への参照なので、毎回上書きされます。

という風に見ることができます。

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.'-'.$a[3].PHP_EOL;
}

見ての通り、配列の最後の項目は現在のループの値を取ります。'0', '1', '2', そして '2' だけです... : )