パラメータを引用する関数の紹介
PHPではパラメータはデフォルトで値渡しであり、関数のパラメータもローカル変数なので、関数内でパラメータの値を変更しても、関数値の外側は変更されません。前のセクションでは、phpの通常のパラメータ関数と疑似型パラメータ関数を紹介しました。このセクションでは、関数がサブプログラムである場合、その関数を呼び出すプログラムを親プログラムと呼ぶことができます。親プログラムは、指定された値または変数を関数に直接渡して使用します。渡された値または変数と関数内の値は別のメモリ ブロックに格納されるため、関数がインポートされた値を変更しても、親プログラムには直接影響しません。
PHP 参照パラメータの関数形式の説明は次のとおりです:
void funName(array &arg) // 在参数列表中出现使用 &描述的参数
以下は PHP 参照パラメータの例です:
<?php //声明一个函数作为测试 function test($a){ $a = 200; // 函数中改变参数值为200 } $b = 100; // 父程序中声明一个全局变量$b并给一个初始值100 test($b); // 调用test函数 将100传给函数的参数 echo $b; // 输出100 $b的值没变化 ?>
上記の例では、test() 関数を呼び出すときに、グローバル変数 $ b の値は関数 test() に渡されます。 test() 関数内で変数 $a に新しい値 200 が割り当てられますが、関数の外で変数 $b の値を変更することはできません。 test() 関数を呼び出した後、変数 $b によって出力される値は 100 のままです。関数がその引数値を変更できるようにするには、引数を参照渡しする必要があります。
値渡しモードと比較して、親プログラムで指定された値またはターゲット変数は関数に渡されませんが、値または変数のメモリ格納ブロックの相対アドレスが関数にインポートされます。したがって、関数内で値が変更されると、親プログラムにも影響が及びます。関数のパラメーターを常に参照渡ししたい場合は、関数定義のパラメーターの前に記号 & を追加します。
前の例を変更します:
<?php //声明一个函数作为测试 function test(&$a){ $a = 200; // 函数中改变参数值为200,加使用 & 引用参数$a,外部变量被修改 } $b = 100; // 父程序中声明一个全局变量$b并给一个初始值100 test($b); // 调用test函数 将变量$b的引用传给函数的参数$a echo $b; // 输出200 $b的值在函数中修改变量$a时被修改 ?>
上記の例では、test() 関数を呼び出すときに、グローバル変数 $b の値が関数 test() に渡されません。ご覧のとおり、test() 関数の定義では、変数 $a が参照によって渡されることを指定するために参照記号 & が使用されています。関数本体では、変数 $a に新しい値 200 が割り当てられます。外部データは参照によって変更されるため、外部変数 $b の値も変更されます。関数呼び出しが終了すると、変数 $b の出力値が 200 であることがわかります。
注: & を使用して関数の仮パラメータ内のパラメータを変更する場合。次に、関数を呼び出すときに、値ではなく変数をこのパラメーターに渡す必要があります。
【おすすめ関連チュートリアル】
1.「php.cn Dugu Jiijian (4) - PHPビデオチュートリアル」
2. PHPプログラミングの入門からマスターまでの完全なビデオチュートリアル
3. . php実践的なビデオチュートリアル
以上がPHP関数参照パラメータ関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。