検索
ホームページバックエンド開発PHPチュートリアルPHP リファレンス値渡し学習メモ_PHP チュートリアル

PHP リファレンス値渡し学習メモ_PHP チュートリアル

Jul 13, 2016 am 10:50 AM
phpパス値使用ただ存在する勉強物体引用ノート割り当て

PHP で参照割り当てを使用するには、元のオブジェクトの前に & を追加するだけです $a = &$b; 実際、PHP における参照は、同じ値を指す異なる名前を持つ 2 つの変数です。

引用とは

PHP でのクォートとは、同じ変数の内容に異なる名前でアクセスすることを意味します。これは C ポインターとは異なり、参照はシンボル テーブルのエイリアスです。 PHP では変数名と変数の内容が異なるため、同じ内容でも異なる名前が付けられることに注意してください。最も近い類似点は、Unix のファイル名とファイル自体です。変数名はディレクトリ エントリであり、変数の内容はファイル自体です。参照は、Unix ファイル システムのハードリンクと考えることができます。

1: 変数への参照

コードは次のとおりです コードをコピー
$a =100;
$b = &$a;
echo $b; // ここに 100
を出力します echo $a; // ここでは 100 が出力され、$a と $b の値が両方とも 100 であることを示します。
$b= 200;
echo $a; //200 がここに出力されます
echo $b; //200 がここに出力され、同じアドレスを使用していることがわかります。どちらかを変えるともう一方も変わります。
?>

2: 関数内で値を渡します。

コードは次のとおりです コードをコピー

関数 main($a,$b){
$b= $a+100;
$b を返します;
}
main(55,&$b); //ここでの $b は、実際にはそのメモリ アドレスを関数 main の $b パラメータに渡し、パラメータ $b の変更を通じて外側の $b の値を変更します。
echo $b; //155 がここに出力されます
?>

3: オブジェクトの参照渡し

オブジェクトの参照

コードは次のとおりです コードをコピー

クラスクラブ{
var $name="レアル・マドリード";
}
$b=新しいクラブ;
$c=$b;
echo $b->name;// ここにレアル・マドリードを出力します
echo $c->name;//レアル・マドリードがここに出力されます
$b->name="ロナウド";
echo $c->name;//ロナウド
をここに出力 ?>

引用解除
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:

コードは次のとおりです コードをコピー

$a = 'ロナウド'
$b =&$a;
設定を解除 ($a);
?>

$b の設定は解除されず、$a のみが解除されます。


例、参照渡し

test1.php

コードは次のとおりです コードをコピー

/**
* 参考までに渡します
次のコンテンツは参照によって渡すことができます:
foo($a) などの変数
新しいステートメント (foo(new foobar()) など)
関数から返される参照。例:

*/
関数 foo(&$var)
{

$var++; }

$a=5
//合法
ふー($a); foo(新しい stdClass()); //違法使用
Function bar() // 欠落している &
に注意してください {
$a = 5; $a を返します。 }
foo(bar()); // PHP 5.0.5 以降、致命的なエラーが発生します
foo($a = 5) // 変数ではなく式
foo(5) // 致命的なエラーが発生します

?>



test2.php

コードは次のとおりです

コードをコピー 機能テスト(&$a) { コードをコピー
$a=$a+100; }

$b=1; echo $b;//出力 1
test($b); //ここで関数に渡される $b は、実際には $b の変数の内容が配置されているメモリ アドレスです。関数内の $a の値を変更することで、$b の値を変更できます。変わりました

エコー「
」;
echo $b;//出力 101

/*****************************
*
* ここで、call_user_func_array の後のパラメータには &
が必要であることに注意してください。 *
* ****************************/

//上記の "test($b);" では $b の前に & 記号を追加しないでください。ただし、関数 "call_user_func_array" では、パラメータを参照で渡したい場合は、次のように & 記号が必要です。次のコード:

関数 a(&$b){

}
$c=0; Call_user_func_array('a',array(&$c)); $c をエコーし​​ます。 //出力 1
?>




参照による返却

参照リターンは、関数を使用して参照をバインドする必要がある変数を見つけたい場合に使用されます。パフォーマンスを向上させるために戻り参照を使用しないでください。エンジンはそれ自体を最適化するのに十分な機能を備えています。正当な技術的理由がある場合にのみ参照を返してください。参照を返すには、この構文を使用します


コードは次のとおりです

関数&test()

{ static $b=0;//静的変数を宣言します $a=5 $a=test();//このステートメントは、$b の値が 2 であることを出力します http://www.bkjia.com/PHPjc/632667.html
$b=$b+1; $b をエコーし​​ます。 $b を返します。 } $a=test();//このステートメントは、$b の値が 1 であることを出力します
$a=&test();//このステートメントは、$b の値が 3 であることを出力します。ここで、戻り値 $b の $b 変数のメモリ アドレスと $a 変数のメモリ アドレスは同じ場所を指します。
$a=5; //$b を返す変数の値が変更されました

$a=test();//このステートメントは、$b の値が 6 であることを出力します
/**



以下で説明します:
このように、$a=test(); は実際には関数からの参照を取得しません。理由としては、これは PHP
の規定です。 PHP では、$a=&test(); を通じて取得されるものは関数
の参照戻りであると規定されています。 参照リターンとは何かについては (PHP マニュアルには、「参照リターンは、参照をバインドする必要がある変数を見つけるために関数を使用したい場合に使用されます。」と書かれています。) このナンセンスのせいで、私は長い間理解できませんでした

上の例で説明すると
$a=test() を使用して関数を呼び出すと、関数の値が $a に代入されるだけであり、$a への変更は関数内の $b には影響しません
$a=&test() を通じて関数を呼び出すと、その関数は $b を返す $b 変数のメモリ アドレスと、$a 変数のメモリ アドレスが同じ場所を指すようになります
つまり、これと同等の効果が生じる($a=&$b;)ので、$aの値を変更すると$bの値も変更されるので、
を実行した後、 $a=&test(); $a=5
これから、$b の価値は 5 になります

ここで静的変数を使用するのは、関数の参照戻り値を誰もが理解できるようにするためです。実際、関数の参照戻り値は主にオブジェクトで使用されます
。 */
?>

oschina で見た興味深い例:

コードは次のとおりですコードをコピー 安倍 ベン
$a = array('アベ','ベン','カム'); foreach ($a as $k=>&$n)
$n = strtoupper($n); foreach ($a as $k=>$n) // ここには参照がないことに注意してください
「$nn」をエコーし​​ます。 プリント_r($a); ?>




結果は次のようになります:
ベン

配列
(
[0] =>安倍
[1] =>ベン
[2] =>ベン
)

説明: 2 番目の foreach のループは次のとおりです:

配列
(

[0] =>安倍

[1] =>ベン

[2] =>安倍

)
配列
(
[0] =>安倍
[1] =>ベン
[2] =>ベン
)
配列
(
[0] =>安倍
[1] =>ベン
[2] =>ベン
)

unset($n) がないため、常に配列の最後の要素を指します。2 番目の foreach では、最初のループで $n、つまり $a[2] が ABE に変更され、2 番目のループで変更されます。 BEN を取得すると、3 回目でも BEN を取得できます。


www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/632667.html技術記事 PHP で参照割り当てを使用するには、元のオブジェクトの前に $b を追加するだけです。実際、PHP における参照は、同じ値を指す異なる名前を持つ 2 つの変数です。 引用とは PHP での引用とは...を使用することを意味します
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
アクション中のPHP:実際の例とアプリケーションアクション中のPHP:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境