php引用(&)の詳しい説明
PHP における参照の意味は、異なる名前が同じ変数の内容にアクセスすることです。
は C 言語のポインタとは異なります。 C 言語のポインタは、変数の内容のアドレスをメモリに保存します
変数参照
PHP の参照では、2 つの変数を使用して同じ内容を指すことができます
コードをコピー コードは次のとおりです:
<
$a="ABC";
$b =&$ a;
echo $a;//ここに出力: ABC
echo $b;//ここに出力: ABC
$b="EFG"; //ここに $a 値EFG になるので、EFG を出力
echo $b;//ここに EFG を出力
Passアドレス呼び出しについては多くは言いません。コードは次のとおりです。
コードをコピーします。 コードは次のとおりです。 > 関数 test(&$ a) {
$a=$a 100;}
echo $b;//出力 1
test($b); // ここで $b が関数に渡すのは、実際には $b の変数の内容が配置されているメモリ アドレスです。関数内の $a の値を変更することで、$b の値を変更できます。 updated
echo "
";
echo $b;//Output 101
ここで test(1); を使用するとエラーが発生することに注意してください。
関数の参照
コードをコピーしてください
コードは次のとおりです:
function &test() { static $b=0;//静的変数を宣言します
$b=$b 1;echo $b;
return $b;
}
$a=test() ;//このステートメントは $b の値を 1
$a=5; として出力します。 🎜>$a=test();//このステートメントは $b の値を 2 として出力します
$a =&test();//このステートメントは $b の値を 3 として出力します
$a =5;
$a=test();//このステートメントは $b の値を 6 として出力します
以下の説明:
このように $a=test() ; 得られるものは実際には関数参照の戻り値ではなく、通常の関数呼び出しと何ら変わりません: これは PHP の規則です
PHP では、関数の参照戻り値は $a=&test を通じて取得されると規定されています。 ();
参照リターンとは何かについては、PHP マニュアルに次のように書かれています。参照リターンは、関数を使用して参照を見つけたい場合に使用されます。それは、どの変数にバインドするときである必要があります。 ) 私は長い間このナンセンスを理解できませんでした
上の例を使って説明すると、
内の $b には影響しません。関数が $a=&test() を通じて呼び出された場合、その関数は、$b が返される $b 変数のメモリ アドレスを、 $a 変数のメモリアドレス。同じ場所
を指すと同等の効果 ($a=&b;) が生成されるため、$a の値を変更すると $b の値も変更されるため、
$ を実行した後、 a=&test() ;
$a=5;
その後、$b の値は 5 になります
ここでは関数の参照戻りを理解するために静的変数を使用しています。関数の参照戻り値は主にオブジェクトで使用されます
オブジェクト参照
コードをコピー
コードは次のとおりです:
クラス a{ var $abc="ABC"; $c=$b; 🎜>echo $b->abc;//ここに ABC を出力
echo $c->abc;//ここに ABC を出力$b->abc="DEF"; c->abc;//ここに DEF を出力します
?>
上記のコードは PHP5 での実行結果です
PHP5 では、オブジェクトのコピーは参照によって実現されます。上記の列では、 $b=new a; $c=$b; は $b=new a;
のデフォルトではオブジェクトを参照によって呼び出すことになります。オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合、PHP では、
参照の役割
< と呼ばれる特別なメソッドを定義します。 🎜 >プログラムが比較的大きく、同じオブジェクトを参照する変数がたくさんあり、使用後にオブジェクトを手動でクリアしたい場合は、個人的には "&" メソッドを使用し、その後 $var=null を使用してオブジェクトをクリアすることをお勧めしますまた、php5 で大きな配列を転送する場合は、メモリ容量を節約できるため、「&」メソッドを使用することをお勧めします。
参照解除
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:
コードをコピー
コードは次のとおりです。
$a = 1;
$ b =& $a;
設定を解除します
?> コードをコピーします コードは次のとおりです。
$b の設定は解除されず、$a のみが解除されます。
グローバル参照
グローバル $var で変数を宣言すると、実際にはグローバル変数への参照が作成されます。つまり、これは次の操作と同じです。
< ?php
$ var =& $GLOBALS["var"];
?>
これは、たとえば、unset $var はグローバル変数の設定を解除しないことを意味します。
$this
オブジェクトのメソッドでは、$this は常にそれを呼び出すオブジェクトへの参照になります。
//ここでまたちょっとしたエピソードです
PHP のアドレスのポインティング (ポインタに似た) 関数はユーザー自身によって実装されるのではなく、Zend コアによって実装されます。PHP の参照は " を使用します。 write 「タイムコピー」の原理は、書き込み操作が発生しない限り、同じアドレスを指す変数またはオブジェクトはコピーされないということです。
簡単に言えば
1: 次のコードがあるとします。
$a="ABC";
$b=$a;
実際には、$a と $b は両方とも次のことを指します。このときのメモリアドレスは $a と $b が別のメモリを占有するわけではありません
2: 上記コードに次のコードを追加すると
$a="EFG"; なぜなら $a と $b は異なるメモリを占有します。 a と $b 指定されたメモリ内のデータは書き換える必要があります。この時点で、Zend コアは $a の $b 用のデータ コピーを自動的に作成し、ストレージ用のメモリを再申請します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
