Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 함수 인수

<시간/>

소개

PHP의 함수는 인수의 형태로 호출 환경/스크립트로부터 입력을 받아들이도록 정의할 수 있습니다. 이러한 인수는 함수 이름 앞의 괄호 안에 쉼표로 구분된 목록으로 제공됩니다. 함수를 호출하는 동안 동일한 수의 인수를 전달해야 합니다.

PHP는 값, 참조, 기본값과 함께 인수를 전달하고 다양한 수의 인수를 전달하여 함수 호출을 지원합니다.

인수 있는 함수

다음 예에서 함수는 두 개의 형식 인수로 정의됩니다. 값으로 인수를 전달하여 이 함수를 호출할 때. 함수의 인수는 지역 변수가 됩니다. 따라서 함수 내부의 인수 값의 변경은 함수 외부에 반영되지 않습니다.

여기서 $x의 값은 함수 내에서 변경되지만 함수 호출 후 값을 확인하면 변경되지 않습니다.

예시

<?php
function add($x, $y){
   $x= $x+$y ;
   echo $x . "\n";
}
$x=10;
$y=20;
add($x,$y);
//outside function $x has previous value.
echo $x;
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

30
10

함수에 배열 전달

다음 예에서는 배열을 인수로 받도록 add() 함수를 정의합니다. 함수 내에서 배열 요소는 foreach 루프를 사용하여 순회합니다.

예시

<?php
function add($arr){
   $sum=0;
   foreach ($arr as $i){
      $sum+=$i;
   }
   echo "sum = " .$sum;
}
add(array(1,2,3));
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

sum = 6

참조로 인수 전달

값은 값으로 함수의 인수에 전달됩니다. 따라서 함수 내부의 인수 값에 대한 변경 사항은 외부에 반영되지 않습니다. 인수가 참조로 전달되면 변경 사항이 인수 외부의 인수 값으로 전달됩니다.

참조로 값을 받으려면 인수 이름 앞에 $ 기호를 붙여야 합니다.

예시

<?php
function swap(&$x, &$y){
   $t=$x;
   $x=$y;
   $y=$t;
   echo "inside function x=$x y=$y\n";
}
$x=5;
$y=7;
echo "before calling function x=$x y=$y\n";
swap($x, $y);
echo "after calling function x=$x y=$y\n";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

before calling function x=5 y=7
inside function x=7 y=5
after calling function x=7 y=5

변수 $x와 $y의 값은 swap() 함수에서 교환됩니다. 변수는 참조로 전달되기 때문에 변수는 함수 외부에서도 수정된 값을 표시합니다.

유형 힌트(유형 선언)

PHP는 사실 동적으로 유형이 지정된 언어입니다. 따라서 유형이 있는 변수를 선언할 필요가 없습니다(C/C++ 또는 Java에서와 같이). 그러나 함수에서 인수의 유형 선언을 통해 파서는 함수에 전달된 잘못된 데이터 유형을 감지할 수 있습니다.

구문

//define a function with type hints
function myfunction(type $arg1, type $arg2){
   ..
   ..
}
유형의 함수 정의

스칼라 유형, 배열, 클래스/인터페이스, 반복 가능 및 객체를 포함한 모든 표준 PHP 데이터 유형은 함수 선언에서 유형 힌트를 제공하기 위한 유효한 유형입니다.

예시

<?php
function add(...$numbers){
   $ttl=0;
   foreach ($numbers as $num){
      $ttl=$ttl+$num;
   }
   return $ttl;
}
$total=add(10,15,20);
echo "total= $total\n";
echo "total=". add(1,2,3,4,5). "\n";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

total= 45
total=15

func_get_args()를 사용하여 함수에 전달된 인수 목록을 얻을 수도 있습니다. 기능. PHP 루프를 실행하여 전달된 인수 목록의 각 값을 탐색할 수 있습니다. 이 경우 함수 정의에 형식 인수가 없습니다.

예시

<?php
function add (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z\n";
}
add(10,20);
add(5.55, 6.66);
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

addition=30
addition=11

add() 함수에 대한 두 번째 호출에서 부동 소수점이 인수로 제공되지만 여전히 오류/경고가 표시되지 않습니다. PHP는 덧셈을 수행하기 위해 내부적으로 float를 정수로 강제 변환하기 때문입니다. 이러한 자동 유형 변환을 방지하려면 declare를 사용하세요. strict_types=1로 구성

예시

<?php
declare(strict_types=1);
function add (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z\n";
}
add(10,20);
add(5.55, 6.66);
?>

add() 함수에 대한 두 번째 호출은 이제 예외를 발생시킵니다 -

출력

addition=30
PHP Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given