1

PHP にこの最適化が組み込まれているかどうか疑問に思っています。通常、参照を使用せずに foreach を呼び出すと、渡された配列がコピーされて操作されます。その配列への参照カウントが 1 しかない場合はどうなりますか?

たとえば、getData がデータの配列を返すとします。

foreach(getData() as $data)
    echo $data;

getData() によって返される配列には参照が 1 つしかないため、参照によって使用され、最初にコピーされるべきではありませんか、それとも php にはこの最適化がありませんか?

これは、不適切に記述された多くのコードを助けることができる単純な最適化のように思えます。

4

1 に答える 1

4

確かなことは言えませんが、PHP は通常「コピー オン ライト」を使用するため、書き込みを試みるまではすべてが参照であり、その時点でコピーが作成され、そのコピーに書き込みます。

于 2008-10-23T18:34:18.913 に答える