기능

2011-09-29 5 views
0

나는 다음과 같은 기능이있는 경우 :기능

function foo($a = 'a', $b = 'b', $c = 'c', $d = 'd') 
{ 
    // Do something 
} 

내가이 함수를 호출 만 $의 D 값을 전달할 수 따라서 기본값과 다른 모든 인수를 떠나는? 당신이 말한 것처럼

foo(null, null, null, 'bar'); 
+0

가능한 경우 http://stackoverflow.com/questions/5968965/php-default-arguments – Yousf

+0

@Quasdunk, 'foo (' ',' ',' ','bar ')와 같은 의미입니까? ? – freshest

+0

PHP는 파이썬처럼 명명 된 인수를 지원하지 않으므로 모든 이전 인수를 전달해야합니다. 하지만 [이] (http : // stackoverflow.com/questions/7559305/php-passing-array-to-function/7559391 # 7559391) 당신을 도울 수 –

답변

1

아니요, 불가능합니다. 사용 배열 :

function foo($args) { 
    extract($args); 
    echo $bar + $baz; 
} 

foo(array("bar" => 123, "baz" => 456)); 

php.net에 버그 리포트를 쓰기 언어로 명명 된 인수를 추가하도록 요청!

+0

php.net에서 이름있는 인수를 묻는 버그 보고서를 작성하지 마십시오. 몇 년 동안 여러 권이 작성되었으므로 새로운 버그는 모두 중복됩니다. PHP에이 기능을 추가하기를 결정하지 않은 개발자들 사이의 주제에 관해 많은 논의가있었습니다 (심지어 최근까지도). 그러나 주제에 대해 [RFC] (https://wiki.php.net/rfc) 초안을 작성하고 [PHP 내부 메일 링리스트] (http://php.net/)에서 다시 토론하십시오. mailing-lists.php). 불행히도 – salathe

+0

사실입니다. – salathe

1

당신은 널 (null)을 사용해야합니다 : :

foo('bar'); 

또는 나는 이런 식으로 뭔가로 전화를해야 할 :

foo(null, null, null, 'bar'); 

당신이 만약이 같은 코드 뭔가 이런 식으로 할 수있는 더 많은 함수를 만드는 데 신경 쓰지 마라. 전체 코드가 더 깔끔하지 않다고 생각한다.

function update_d($val){ 
    foo(null, null, null, $val); 
} 

또는 당신과 같이 배열을 사용할 수 있습니다

$args = array($a = 'a', $b = 'b', $c = 'c', $d = 'd'); 
foo($args); 
0

을 당신은

foo(null, null, null, 'bar'); 
대안은 함수 서명에서 인수를두고하는 것입니다

, 사용처럼해야 func_get_args()을 사용하여 값을 검색하십시오. 처음 세 null 값을 떠날 경우

function foo() { 
    $args = func_get_args(); 

는하지만 여전히, '바'는 $d 매개 변수임을 알 수있는 방법이 없다. 이 방식은 기능 서명을 난독 처리하고 성능을 저하시키기 때문에 대부분의 경우 바람직하지 않습니다.

0

짧은 대답 : 번호 긴 답변 : Nooooooooooooooooooooooooooooo.

변수가 전혀 설정되지 않은 경우 기본 인수 값이 사용됩니다.

-1

func_get_args() - 함수의 인수 목록 배열을 가져옵니다.
func_num_args() - 당신은 overloading 기술없이 할 수없는 기능

function foo() 
{ 
    $numargs = func_num_args(); 
    echo "Number of arguments: $numargs<br />\n"; 
} 


foo(a); foo(1,b,c); will work fine 
+0

왜 투표 했습니까? – diEcho

0

에 전달 된 인수의 수를 돌려줍니다.

이 경우 프로그램은 하나의 매개 변수 만 전달하면 네 번째 매개 변수라고 가정합니다.