PHP_PHP チュートリアルの値渡しと参照渡し
PHPには値渡しと参照渡しが存在します。後者では、変数を識別するためにアドレス文字 & を使用する必要があります。代入演算の使用例は次のとおりです:
1.価値の移転
1) 基本的なデータ型:
01
02
$a = 1;
03
$b = $a;
04
$b += 2;
05
06
echo "$a = ".$a."
";
07
echo "$b = ".$b."
";
08
09
/* 出力:
10
$a = 1
11
$b = 3
12
*/
13
?>
注: ここでは $b = $a ステートメントを使用して、$a の値を $b に割り当てます。 つまり、この時点で割り当てられる値は 1 です。
ステートメント $b += 2 の実行後:
したがって、$b は 3 になりますが、$a の値は変わりません。
2) 参照データ型
人物クラスは次のとおりです:
01
クラス人 {
02
プライベート $_name;
03
04
パブリック関数 setName($name) {
05
$this->_name = $name;
06
}
07
08
パブリック関数 getName() {
09
return $this->_name;
10
}
11
12
パブリック関数 toString() {
13
return "名前は ".$this->_name;
14
}
15
}
2 つの Person クラス オブジェクトを初期化し、プロパティを設定します。
1
$p1 = 新しい人();
2
$p1->setName("person1");
3
$p2 = 新しい人();
4
$p2->setName("person2");
次のことを実行します:
1
$p3 = $p1;
テスト:
1
echo "$p1 の ".$p1->toString().".
";
2
echo "$p3 の ".$p3->toString().".
";
3
4
/* 出力:
5
$p1 の名前は person1 です。
6
$p3 の名前は person1 です。
7
*/
注: ステートメント $p3 = $p1 の場合、この時点で割り当てられる値は 0x000a です。つまり、$p1 と $p3 は両方とも同じオブジェクトを参照します。
2. 参照によるパス
1) 基本的なデータ型
01
02
$a = 1;
03
$b = &$a;
04
$b += 2;
05
06
echo "$a = ".$a."
";
07
echo "$b = ".$b."
";
08
09
/* 出力:
10
$a = 3
11
$b = 3
12
*/
13
?>
注: ここでは $b = &$a ステートメントを使用して参照渡しを行っています。つまり、この時点で割り当てられる値は 0x0001 です。
$b += 2 の後、
つまり、$a と $b の値は両方とも 3 です。
2) 参照データ型
前の$p3 = $p1を置き換えるために次の操作が実行された場合
1
$p3 = &$p1;
次に、次の操作を行います:
1
$p3 = $p2;
テスト結果は次のとおりです:
1
echo "$p1 の ".$p1->toString().".
";
2
echo "$p3 の ".$p3->toString().".
";
3
4
/* 出力:
5
$p1 の名前は person2 です。
6
$p3 の名前は person2 です。
7
*/
注: $p3 = $p2 ステートメントが実行されたため、$p3 の結果情報が出力されたことは明らかですが、$p1 の結果情報が以前と異なるのはなぜですか?
これは、$p3 = &$p1 ステートメントが実行された後、このときに割り当てられる値が 0x0001 であるためです。
$p3 = $p2 ステートメント実行直後
そのため、上記の結果情報が出力されます。これは、アドレス文字 & が機能しているためです。
完全なコードは次のとおりです:
1) 参照データ型
01
02
クラス人 {
03
プライベート $_name;
04
05
パブリック関数 setName($name) {
06
$this->_name = $name;
07
}
08
09
パブリック関数 getName() {
10
return $this->_name;
11
}
12
13
パブリック関数 toString() {
14
return "名前は ".$this->_name;
15
}
16
}
17
18
$p1 = 新しい人();
19
$p1->setName("person1");
20
$p2 = 新しい人();
21
$p2->setName("person2");
22
23
$p3 = $p1;
24
// $p3 = &$p1;
25
// $p3 = $p2;
26
echo "$p1 の ".$p1->toString().".
";
27
echo "$p3 の ".$p3->toString().".
";
28
?>
2) 基本的なデータ型
1
2
$a = 1;
3
$b = $a;
4
// $b = &$a;
5
$b += 2;
6
7
echo "$a = ".$a."
";
8
echo "$b = ".$b."
";
9
?>
結論: 値の転送と参照の転送は、メソッド/関数のパラメーターを渡すときの代入操作に似ています。

ホット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 は、
