>  기사  >  백엔드 개발  >  모든 매개변수가 PHP 문자열로 전달됩니까?

모든 매개변수가 PHP 문자열로 전달됩니까?

青灯夜游
青灯夜游원래의
2022-12-15 15:07:364952검색

아니요, PHP 매개변수는 문자열, 숫자, 부울 값, 배열 등이 될 수 있습니다. PHP 버전 5.6부터 배열 매개변수 전달이 지원됩니다. 함수의 형식 매개변수는 "..."를 사용하여 함수가 다양한 수의 매개변수를 허용할 수 있으며 가변 매개변수가 함수에 전달됨을 나타낼 수 있습니다. 구문 "함수" 함수 이름(...$arr){//실행 코드}"입니다.

모든 매개변수가 PHP 문자열로 전달됩니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, DELL G3 컴퓨터

PHP 사용자 정의 함수

PHP에서 사용자 정의 함수를 선언하려면 다음 구문 형식을 사용할 수 있습니다. :

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

함수를 선언할 때 함수 이름 뒤의 괄호 "()"도 필요합니다. 괄호 안에는 허용되는 매개변수 목록이 포함되어 있으며, 매개변수는 선언된 변수이며, 해당 변수는 호출 시 사용할 수 있습니다. 함수에 전달되었습니다. 매개변수 목록은 비어 있거나 쉼표로 구분된 하나 이상의 매개변수를 가질 수 있습니다.

PHP에서는 함수가 필요할 때마다 함수 이름과 매개변수 목록을 사용하여 함수를 호출할 수 있습니다.

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

함수의 매개변수 목록은 0개 이상의 매개변수로 구성되며, 각 매개변수는 쉼표로 구분됩니다.

매개변수는 사용되는 위치에 따라 형식매개변수와 실제매개변수 두 가지로 구분됩니다.

형식 매개변수는 함수를 정의할 때 함수 이름 뒤에 괄호로 묶인 매개변수 목록입니다("형식 매개변수"라고도 함). 이름과 마찬가지로 형식 매개변수 자체에는 특정 값이 없습니다. 함수 본문은 외부 매개변수를 사용해야 하기 때문에 매개변수가 올바르게 전달되기 위해서는 형식 매개변수를 통해 전달되어야 하며 함수 본문의 형식 매개변수는 아래 그림과 같습니다.

모든 매개변수가 PHP 문자열로 전달됩니까?

실제 매개변수는 함수를 호출할 때 함수 이름 뒤 괄호 안의 매개변수입니다("실제 매개변수"라고 함). 실제 매개변수와 형식 매개변수는 순서대로 1:1로 대응되어야 하며, 이는 함수 본문의 형식 매개변수를 대체합니다. 의 해당 변수 값은 함수의 매개변수가 특정 값일 수도 있고 실제 매개변수는 아래 그림과 같습니다.

모든 매개변수가 PHP 문자열로 전달됩니까?

php 매개변수 전달

함수를 호출할 때 함수에 매개변수를 전달해야 합니다. 함수에 전달된 매개변수를 실제 매개변수라고 하고, 함수에서 정의한 매개변수를 형식 매개변수라고 합니다. . 함수에 매개변수를 전달하는 방법에는 값 전달, 참조 전달, 기본 매개변수 및 가변 길이 매개변수의 네 가지 방법이 있습니다.

1. 값 전달

값 전달은 "값에 의한 복사 전달"이라고도 알려진 PHP 함수의 기본 값 전달 방법입니다. 이름에서 알 수 있듯이 값 전달 방식은 실제 매개변수의 값을 복사한 후 함수의 형식 매개변수에 전달하므로 함수 내에서 매개변수의 값을 조작해도 함수 외부의 실제 매개변수에는 영향을 미치지 않습니다. 따라서 함수가 실제 매개변수의 값을 수정하는 것을 원하지 않으면 값으로 전달할 수 있습니다.

【예제】 다음은 간단한 함수를 정의한 것입니다. 함수에는 두 개의 매개변수가 있으며, 매개변수의 값은 함수 내에서 교환됩니다.

<?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. Pass by reference

매개변수의 참조 전달은 실제 매개변수의 메모리 주소를 복사하여 함수의 형식 매개변수에 전달하는 것입니다. 실제 매개변수와 형식 매개변수는 모두 동일한 메모리 주소를 가리키므로 형식 매개변수에 대한 함수의 연산은 함수 외부의 실제 매개변수에 영향을 미칩니다.

참조에 의한 전달은 실제 매개변수의 메모리 주소를 함수의 형식 매개변수에 전달하는 것입니다. 따라서 실제 매개변수와 형식 매개변수는 동일한 메모리 주소를 가리킵니다. 이때 함수 ​​내부의 모든 연산은 함수 외부의 실제 매개변수 값에 영향을 미치게 됩니다. 참조 전달 방법은 아래와 같이 값 전달 기준으로 & 기호를 추가하는 것입니다.

function name (&参数1, &参数2, ..., &参数3) {
  ...  
  }

[예제] 위 예의 코드를 약간 수정하고 참조 전달 방법을 사용하여 매개변수를 전달합니다. 스왑 함수는 다음과 같습니다.

<?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. 기본 매개변수

기본 매개변수는 하나 이상의 형식 매개변수에 대한 기본값을 지정하는 것입니다. 함수 값을 호출할 때 해당 매개변수가 전달되지 않으면 함수는 이 기본값을 사용하므로 매개변수 없이 호출할 때 오류를 피할 수 있고 일부 프로그램을 더 합리적으로 만들 수도 있습니다. 해당 매개변수가 전달되면 이 기본값이 대체됩니다.

함수의 기본 매개변수는 다음과 같습니다.

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

그 중 형식 매개변수 $str 뒤의 "hello Chinese website"가 기본값이며, 형식 매개변수는 =를 사용하여 기본값과 연결되어야 합니다.

[예제] 아래와 같이 기본 매개변수를 사용하여 함수를 정의해 보겠습니다.

<?php
  function add($a, $b=56){
    echo $a.&#39; + &#39;.$b.&#39; = &#39;.($a+$b).&#39;<br>&#39;;
  }
  add(11);
  add(37, 29);
?>

모든 매개변수가 PHP 문자열로 전달됩니까?

默认参数也可以是多个,而且默认参数必须放在非默认参数右边,并且指定默认参数的值必须是一个具体的值,如数字、字符串,而不能是一个变量。

4、可变长度参数--将一个数组传递给函数

在 PHP 5.6 及以后的版本中,函数的形式参数可使用…来表示函数可接受一个可变数量的参数,可变参数将会被当作一个数组传递给函数。示例如下:

<?php
    function test(...$arr){
        var_dump($arr);
    }
    test(1, 2, 3, 4);
    test(5, 6, 7, 8, 9, 10);
?>

모든 매개변수가 PHP 문자열로 전달됩니까?

推荐学习:《PHP视频教程

위 내용은 모든 매개변수가 PHP 문자열로 전달됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.