Php/docs/language.references.pass

提供:Dev Guides
< Php
移動先:案内検索

リファレンス渡し

リファレンスにより関数に変数を渡すことが可能です。この場合、関数内で その引数を修正可能になります。構文は次のようになります。

<?phpfunction foo(&$var){    $var++;}$a=5;foo($a);// $a はここでは 6 です?>

注意:

関数コールの際には、リファレンス記号がないことに注意してください。 関数定義にのみリファレンス記号があります。リファレンスで正しく引数を 渡すには、関数定義のみで十分です。

次のものはリファレンスで渡すことが可能です。

  • 変数、すなわち、foo($a)
  • 関数から返されるリファレンスは、次のようになります。

    <?phpfunction foo(&$var){    $var++;}function &bar(){    $a = 5;    return $a;}foo(bar());?>

    リファレンスによる 返り値 に関する説明も参照ください。

他の式は、結果が未定義となるため、リファレンスで渡すべきではありません。 例えば、リファレンスで渡す次の例は、無効です。

<?phpfunction foo(&$var){    $var++;}function bar() // & がないことに注意{    $a = 5;    return $a;}foo(bar()); // notice が発生foo($a = 5); // 式、変数ではないfoo(5); // 致命的なエラーが発生するclass Foobar{}foo(new Foobar()) // PHP 7.0.7 以降は E_NOTICE が発生                  // Notice: Only variables should be passed by reference?>