ホームページ  >  記事  >  バックエンド開発  >  すべてのパラメータはphp文字列で渡されますか?

すべてのパラメータはphp文字列で渡されますか?

青灯夜游
青灯夜游オリジナル
2022-12-15 15:07:365006ブラウズ

いいえ、PHP パラメータには文字列、数値、ブール値、配列などが使用できます。 PHP バージョン 5.6 以降では、配列パラメータを渡すことがサポートされています。関数の仮パラメータでは、関数が可変数のパラメータを受け入れることができることを示すために「...」を使用でき、可変パラメータが関数に渡されます。構文は「function"関数名(...$arr)//実行コード}」です。

すべてのパラメータはphp文字列で渡されますか?

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

PHP カスタマイズ機能

PHP でカスタム関数を宣言するには、次の構文形式を使用できます。

function 函数名 (参数1, 参数2, ..., 参数n){
    函数体;
    return 返回值;
}

関数を宣言するときは、関数名の後にかっこ "()" を使用します。受け入れ可能なパラメータ リストのセットを括弧で囲む必要があります。パラメータは宣言された変数であり、関数の呼び出し時に変数を関数に渡すことができます。パラメータ リストは空にすることも、1 つ以上のパラメータを指定することもできます。複数のパラメータを区切るにはカンマを使用します。

PHP では、関数を使用する必要がある場合は関数名とパラメータ リストを使用して関数呼び出しを行うだけです。

函数名 (参数1, 参数2, ..., 参数n);

関数のパラメータ リストは、各パラメータがカンマで区切られた 0 個以上のパラメータで構成されていることがわかります。

パラメータは、使用される場所に応じて、仮パラメータと実パラメータの 2 種類に分類されます。

仮パラメータとは、関数を定義する際に関数名の後ろに括弧で囲まれたパラメータの一覧(「仮パラメータ」といいます)のことで、その名の通り、仮パラメータ自体には特定の値はありません。関数本体では外部パラメータを使用する必要があるため、パラメータを正しく渡すためには、仮パラメータと関数本体内のデータを経由する必要があります。仮パラメータは次の図に示すとおりです。

すべてのパラメータはphp文字列で渡されますか?

実パラメータは、関数を呼び出すときに関数名の後ろに括弧で囲まれたいくつかのパラメータです (「実パラメータ」と呼ばれます)。実パラメータと仮パラメータには必要なパラメータが必要です。関数本体の仮パラメータの対応する変数値を置き換えます. 関数のパラメータは特定の値または変数にすることができます. 実際のパラメータは次の図に示すとおりです。

すべてのパラメータはphp文字列で渡されますか?

#php パラメータの受け渡し

関数を呼び出すときは、関数にパラメータを渡す必要があります。関数のパラメータは実パラメータと呼ばれ、関数によって定義されたパラメータは仮パラメータと呼ばれます。関数にパラメータを渡すには、値渡し、参照渡し、デフォルト パラメータ、および可変長パラメータの 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;
?>

実行結果は以下の通り:

すべてのパラメータはphp文字列で渡されますか?

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;
?>

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

すべてのパラメータはphp文字列で渡されますか?

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

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

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

function name ($str = &#39;hello&#39;, $url) {
  echo $str; 
}

このうち、仮パラメータ $str の後の「hello Chinese website」はデフォルト値であり、## を使用する必要があります仮パラメータとデフォルト値の間 #=

接続。

[例] 以下に示すように、デフォルトのパラメーターを使用して関数を定義してみましょう。<pre class="brush:php;toolbar:false">&lt;?php function add($a, $b=56){ echo $a.&amp;#39; + &amp;#39;.$b.&amp;#39; = &amp;#39;.($a+$b).&amp;#39;&lt;br&gt;&amp;#39;; } add(11); add(37, 29); ?&gt;</pre><p><img src="https://img.php.cn/upload/image/761/627/470/167108773879887%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AFphp%E6%96%87%E5%AD%97%E5%88%97%E3%81%A7%E6%B8%A1%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8B?" title="167108773879887すべてのパラメータはphp文字列で渡されますか?" alt="すべてのパラメータはphp文字列で渡されますか?"></p> <p>默认参数也可以是多个,而且默认参数必须放在非默认参数右边,并且指定默认参数的值必须是一个具体的值,如数字、字符串,而不能是一个变量。</p> <p><strong>4、可变长度参数--将一个数组传递给函数</strong></p> <p>在 PHP 5.6 及以后的版本中,函数的形式参数可使用…来表示函数可接受一个可变数量的参数,可变参数将会被当作一个数组传递给函数。示例如下:</p><pre class="brush:php;toolbar:false">&lt;?php function test(...$arr){ var_dump($arr); } test(1, 2, 3, 4); test(5, 6, 7, 8, 9, 10); ?&gt;</pre><p><img src="https://img.php.cn/upload/image/968/227/792/1652092362721105.png" alt="すべてのパラメータはphp文字列で渡されますか?" ></p> <p>推荐学习:《<a href="https://www.php.cn/course/list/29/type/2.html" target="_blank">PHP视频教程</a>》</p>

以上がすべてのパラメータはphp文字列で渡されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。