PHPで関数にパラメータを渡すにはどのような方法がありますか?

青灯夜游
リリース: 2023-03-11 17:56:01
オリジナル
8645 人が閲覧しました

PHP 関数でパラメータを渡す方法: 1. 値渡し、実パラメータの値をコピーして関数の仮パラメータに渡します; 2. 参照渡し、メモリ アドレスをコピーします。実パラメータを指定して渡します 関数の仮パラメータの場合; 3. デフォルト パラメータ、関数の 1 つ以上の仮パラメータのデフォルト値を指定します; 4. 配列として関数に渡される可変長パラメータ。

PHPで関数にパラメータを渡すにはどのような方法がありますか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

関数を呼び出すときは、次のことが必要です。関数にパラメータを渡す場合、関数に渡されるパラメータは実パラメータと呼ばれ、関数によって定義されるパラメータは仮パラメータと呼ばれます。関数にパラメータを渡すには、値渡し、参照渡し、デフォルト パラメータ、および可変長パラメータの 4 つの方法があります。

1. 値の受け渡し

値の受け渡しは、PHP の関数のデフォルトの値の受け渡し方法であり、「値によるコピー受け渡し」とも呼ばれます。名前が示すように、値を渡すメソッドは実パラメータの値をコピーして関数の仮パラメータに渡すため、関数内でパラメータの値を操作しても、関数の外の実パラメータには影響しません。したがって、関数で実際のパラメータの値を変更したくない場合は、値で渡すことができます。

[例] 以下は、2 つのパラメータを持ち、関数内でパラメータの値を交換する単純な関数を定義します。

<?php
    function swap($a, $b){
        echo &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>
ログイン後にコピー

実行結果は次のとおりです。

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 5, $y = 7
ログイン後にコピー

実行結果から、関数内では実際に値が交換されていることがわかりますが、関数の外では値が交換されません。変わりません。したがって、関数を値で渡すことは、単に変数のコピーを渡すことであると言えます。したがって、関数が関数の外部パラメーターを操作できるようにしたい場合は、参照渡しを使用する必要があります。

2. 参照渡し

参照渡しとは、実パラメータのメモリアドレスをコピーして仮パラメータ、実パラメータ、仮パラメータに渡すことです。これらはすべて同じメモリ アドレスを指しているため、仮パラメータに対する関数の操作は、関数の外部にある実際のパラメータに影響を与えます。

参照渡しとは、実パラメータのメモリアドレスを関数の仮パラメータに渡すことです。したがって、実パラメータと仮パラメータは同じメモリ アドレスを指します。このとき、関数内のすべての操作は関数の外の実パラメータの値に影響を与えます。参照渡しの方法は、以下のように値の受け渡しをベースに&記号を追加する方法です。

function name (&参数1, &参数2, ..., &参数3) {
    ...    
}
ログイン後にコピー

【例】 上記例のコードを少し修正して、参照渡しの方法を使用します。 swap 関数に渡します。パラメータ、コードは次のとおりです:

<?php
    function swap(&$a, &$b){
        echo &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>
ログイン後にコピー

実行結果は次のとおりです:

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 7, $y = 5
ログイン後にコピー

3. デフォルトのパラメータ

デフォルトのパラメータは特定の値であるか、複数の仮パラメータでデフォルト値を指定します。関数を呼び出すときに対応する値が渡されない場合、関数はこのデフォルト値を使用します。これにより、パラメータなしで呼び出すときのエラーを回避でき、また、いくつかのプログラムはより合理的です。対応するパラメータが渡されると、このデフォルト値は置き換えられます。

関数のデフォルトのパラメータは次のとおりです:

function name ($str = &#39;PHP中文网&#39;, $url) {
    echo $str;  
}
ログイン後にコピー

このうち、仮パラメータ $str の後の「PHP Chinese Network」はデフォルト値であり、= 接続は次のようにする必要があります。仮パラメータとデフォルト値の間で使用されます。

[例] 次のようにデフォルト パラメータを使用して関数を定義してみましょう:

<?php
    function add($a, $b=56){
        echo $a.&#39; + &#39;.$b.&#39; = &#39;.($a+$b).&#39;<br>&#39;;
    }
    add(11);
    add(37, 29);
?>
ログイン後にコピー

実行結果は次のとおりです:

11 + 56 = 67
37 + 29 = 66
ログイン後にコピー

デフォルト パラメータは複数にすることもできます。デフォルト パラメータはデフォルト以外のパラメータの右側に配置する必要があり、指定するデフォルト パラメータの値は変数ではなく、数値や文字列などの特定の値である必要があります。

[例] 以下のように複数のデフォルトパラメータを持つ関数を定義してみましょう:

<?php
    function add($a, $b=33, $c=57){
        echo $a.&#39; + &#39;.$b.&#39; + &#39;.$c.&#39; = &#39;.($a+$b+$c).&#39;<br>&#39;;
    }
    add(11);
    add(31, 22);
    add(64, 9, 7);
?>
ログイン後にコピー

実行結果は次のようになります:

11 + 33 + 57 = 101
31 + 22 + 57 = 110
64 + 9 + 7 = 80
ログイン後にコピー

4. 可変長パラメータ

#PHP 5.6 以降のバージョンでは、関数の仮パラメータで... を使用して、関数が可変数のパラメータを受け入れることができ、可変パラメータが配列として渡されることを示すことができます。関数。例は次のとおりです。

<?php
    function test(...$arr){
        print_r($arr);
    }
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    test(1, 2, 3, 4);
    test(5, 6, 7, 8, 9, 10);
?>
ログイン後にコピー

実行結果は次のとおりです。

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Array
(
    [0] => 5
    [1] => 6
    [2] => 7
    [3] => 8
    [4] => 9
    [5] => 10
)
ログイン後にコピー
推奨学習: "

PHP ビデオ チュートリアル "

以上がPHPで関数にパラメータを渡すにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!