2014-11-04 3 views
0

인수가 참조 (&)와 함께 전달되는 함수가 있습니다. 내가 NULL에 그 인수를 설정하는 경우에는, 나는 오류 얻을 :함수에서 참조 오류를 전달할 수 없습니다.

"에서 참조로 매개 변수 1을 통과 할 수 없음을 ..."이것은 스크립트입니다

: 이것은 내가

<?php 
function doSomething(&$reference,$arg1,$arg2){ 
    if($reference !== NULL){ 
     //Do something with reference 

    }else{ 
     //Do something else 
    } 
} 

//Call with reference 
doSomething($a,$b,$c); 

//Call without reference 
//doSomething(NULL,$b,$c); 
?> 

입니다 NULL이 변수로 선언되지 않았지만 함수 자체에서 즉시 선언 되었기 때문에 생각하십시오. 난 그냥 함수에 NULL을 넣을 때 참조 오류가 표시되지 않습니다 그래서 어떻게 내가 내 기능을 수정합니까

$nullVar = NULL; 
doSomething($nullVar,$b,$c); 

, 만 가능한 참조를 (내가 사용하지 않기 때문에 유지 : 나는이 작업을 수행 할 때 작동

function doSomething($arg1,$arg2, &$reference = null){ 
    if($reference !== NULL){ 
     //Do something with reference 

    }else{ 
     //Do something else 
    } 
} 

$a = 'a'; 
$b = 'b'; 

doSomething($a, $b); 

그러나 세 번째 인수에 null를 전달하는 것은 여전히 ​​발생합니다 오류 : 당신은 인자의 위치를 ​​바꿀 경우 NULL로 설정 참조)

+1

나는 이것을 피할 수 없다고 생각한다. - 변수 만 참조로 전달되고 NULL은 변수가 아니다. – Mikk

답변

2

당신은 여전히 ​​옵션 참조를 만들 수 있습니다.

doSomething($a, $b, null); // error 

새로 작성한 변수로도 참조 할 수 있습니다. 할당 된 값이없는 변수는 기본적으로 null이므로 나중에 변수를 사용하지 않고 변수를 제공 할 수 있습니다.

doSomething($a, $b, $unused_var); 
+0

이것은 간단한 예일 뿐이지 만, 예를 들어 2 개의 참조 인수가있는 경우 여전히 작동하지 않습니다. – user3053216

+0

@ user3053216 주위를 둘러 보는 방법에 대한 아이디어를 얻기 위해 업데이트되었습니다. – Flosculus

0

NULL을 참조 할 수 없습니다. 존재하지 않습니다. 솔직히 함수를 호출하고 if ($ reference! == NULL) 블록을 실행하기 전에 null을 확인하십시오. 또는 함수를 두 개의 분리 된 함수로 나눌 수 있습니다. 하나는 $ reference가 null이고 다른 하나가 $ reference를 가리키는 경우입니다.

관련 문제