PHPのPassByReferenceおよびPassByValueとは何ですか?
この記事では、PHPでの値渡しと参照渡しについて学習します。
それでは、これら2つの概念を詳しく理解しましょう。
PHPでは一般的に、値渡しアプローチを使用して関数に引数を渡します。関数内の引数の値が変更されても、関数外では変更されないため、この方法に従っています。
場合によっては、関数の引数を変更する必要があります。そのため、関数が引数を変更できるようにするには、参照で渡す必要があります。
参照によって渡されることから始めましょう。すでに述べたように、関数を参照して変数を渡すことができるので、関数は変数を変更できます。参照によって渡されたパラメーターを渡すプロセスを開始するには、関数定義の引数名の前にアンパサンド(&)を追加します。
例
簡単な例でこれをテストしてみましょう。
<?php function calculate(&$a){ $a++; } $a=5; calculate($a); echo $a; ?>
出力
6
説明
ここでは、変数$ aを宣言し、関数calculate()への参照によってそれをpassとして渡しました。したがって、原則として、$ aの値が関数内で変更されると、関数外でも変更されます。
注
関数呼び出しには参照記号はなく、関数定義のみにあります。関数定義だけで、参照によって引数を正しく渡すことができます。これは、calculate(&$ a);に使用する場合、PHPの5.4バージョンでは非推奨になりました。エラーが発生します。
例
値渡しを理解するために例をテストしてみましょう。
<?php function calculate($a){ $a++; echo $a."<br/>"; } $a=5; calculate($a); echo $a; ?>
出力
6 5
説明
ここでは、値を渡し値として関数calculate()に渡しました。その値は関数内で変更されますが、関数外には反映されません。変数の値は、関数の外では同じままです。
-
C#の値渡しと参照パラメーターの違いは何ですか?
参照パラメータ 参照パラメータは、変数のメモリ位置への参照です。参照パラメータは、メソッドに提供される実際のパラメータと同じメモリ位置を表します。 値パラメーターとは異なり、参照によってパラメーターを渡す場合、これらのパラメーターの新しい保管場所は作成されません。 値渡し これは、パラメータをメソッドに渡すためのデフォルトのメカニズムです。このメカニズムでは、メソッドが呼び出されると、値パラメーターごとに新しい保存場所が作成されます。 実際のパラメータの値がそれらにコピーされます。したがって、メソッド内のパラメーターに加えられた変更は、引数に影響を与えません。
-
Pythonでの参照と値の受け渡し
Python言語のすべてのパラメーター(引数)は、参照によって渡されます。これは、関数内でパラメーターが参照するものを変更すると、その変更が呼び出し元の関数にも反映されることを意味します。 例 #!/usr/bin/python # Function definition is here def changeme( mylist ): "This changes a passed list into this function" mylist.append([1,2,3,4]); print "Values inside the function: ",