PHPリファレンスの説明

WBOY
リリース: 2016-07-25 08:56:14
オリジナル
1076 人が閲覧しました
  1. function &bar() {
  2. $a = 5;
  3. return $a;
  4. }
次のように使用する場合は、コードをコピーします

: $ret = &bar(); つまり、定義および使用するときに & 記号を追加する必要があります。

5、オブジェクトの割り当てと転送 注: PHP4 と PHP5 では、オブジェクト リソースの割り当てと受け渡しに違いがあります。 PHP4の場合:

  1. $a = new Object() 実際、$a と new Object() は異なるオブジェクト インスタンスにマップされるため、参照代入の転送には $a = & new Object() を明示的に使用する必要があります。
  2. $b = $a 上記と同じ。
  3. foo(new Object()) / foo($a) 上記と同じ。
  4. foo() {$a = new Object(); return $a} 上記と同じ。
コードをコピー

PHP5:

  1. $a = new Object() どちらも同じオブジェクトにマップされ、参照文字を使用する必要はありません。
  2. $b = $a 上記と同じ。
  3. foo(new Object()) / foo($a) 上記と同じ。
  4. foo() {$a = new Object(); return $a} 上記と同じ。
コードをコピー

備考: テスト中に見つかったもの: $a = new Object(); $b = $a の場合、$a->attr = 12; の場合、最終結果は $a->attr と $b->attr の両方になります。 13に等しい、想像したように独立しているのではなく。 $a->attr と $b->attr は深くコピーされていない可能性がありますが、依然として同じメモリの異なるマッピングです。 $a = new Object(); $b = &$a; の場合、最初から最後まで実際のオブジェクトは 1 つだけであり、$a と $b は単なるマッピングであるため、そのような疑いはありません。

6、未設定および =null unset($a) と $a=null を使用した場合の結果は異なります。 このメモリ ブロックに $a のマッピングが 1 つしかない場合、unset($a) は $a=null と同等になり、メモリの参照カウントは 0 になり、自動的にリサイクルされます。 メモリのブロックに $a と $b の 2 つのマッピングがある場合、 unset($a) では $a=null が発生し、 $b は変更されず、 $a=null では $a=$b=null が発生します。

原因分析: 変数に null を代入すると、その変数に対応するメモリ ブロックの参照カウントが直接 0 に設定され、自動的にリサイクルされます。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!