2017-04-20 2 views
0

선택적 매개 변수를 사용하여 PHP 함수를 작성 중이며 작동하지 않는 것처럼 보입니다. 그것은이 새로운 배열 []로 설정 얻을 $var 비어있는 경우 $optional의 값을 설정할 수 $var 설정하는 $optional PARAM으로 불리는 경우선택적 매개 변수

function myFunc($param,$optional){ 
    $var = $optional || []; 
} 

논리입니다. 그래도 정의되지 않은 변수 $var이 나타납니다.

질문 : 왜 함수에서 선택적 매개 변수를 선언 할 수 있습니까?

답변

2

당신은 매개 변수는 선택적 선언해야합니다 함수 매개 변수에서. 매개 변수를 예상하도록 PHP 인터프리터에 알려야하기 때문에 작동하지 않습니다.

function myFunc($param, $optional = null){ 
    // ... 
} 

PHP 7 이상에서는 선택적인 매개 변수를 나타 내기 위해 인수 unpacking에 spread 연산자를 사용할 수 있습니다. 이것은 함수에 인수 배열을 보내는 것보다 낫습니다.

function myFunc($param, ...$optional){ 
    print_r($optional); 
} 

myFunc('baz'); // Array () 
myFunc('baz', 'foo', 'foobar', 'whoo'); // Array ([0] => foo [1] => foobar [2] => whoo) 
1

이 같은 것을 사용할 수 있습니다

function myFunc($param, $optional = '') { 
    $var = $optional; 
    if ($var == '') { 
     $var = []; 
    } 
} 
//without parameter 
myFunc('abc'); 
//with parameter 
myFunc('abc', 'optional param'); 

일반적인 예 : 마지막에 모든 옵션 매개 변수를 유지하는 일반적인 시도에서

function myFunc($param, $optional1 = '', $optional2 = []) {