PHP リファレンスとシンボルは、習得するのが難しい知識ポイントです。 PHP のリファレンスとシンボルの使用法を誤解すると、作成するコード全体でエラーが発生するため、初心者は実際にコードを記述するときにこの点にさらに注意を払う必要があります。
プログラムがここでのみ実行される場合、 $b と $b は同じですが、C のように異なるメモリ空間を占有することはありません。代わりに、これらは同じメモリを指します。これが php と c の違いです。 $b が $a のメモリを指すように $b=&$a と記述する必要はありません。zend はすでに参照の実装を支援しており、zend はこれをいつ行うべきかを判断するのに非常に役立ちます。このように対処すべきではないとき。
後で次のコードを書き続ける場合は、関数を追加し、PHP リファレンスとシンボルを通じてパラメーターを渡し、配列サイズを出力します。
りー上記のコードでは、PHP の & シンボルを参照して $a 配列を printArray() 関数に渡します。zend エンジンは printArray() が $a に変更を加える可能性があると判断し、$ に対して $ を自動的に生成します。 b. a のデータをコピーし、ストレージ用のメモリを再申請します。これが、前述した「コピーオンライト」の概念です。
上記のコードを次のように変更すると:
りー
上記のコードは $a 値を printArray() に直接渡します。現時点では参照転送がないため、コピーオンライトは行われません。
上記の 2 行のコードの実行効率をテストできます。たとえば、ループを 1000 回外に追加して、実行にかかる時間を確認します。その結果、PHP 参照とシンボルの使用が間違っていることがわかります。パフォーマンスが 30% 以上低下する可能性があります。