나는 다음과 같은 기능이있는 경우 :기능
function foo($a = 'a', $b = 'b', $c = 'c', $d = 'd')
{
// Do something
}
내가이 함수를 호출 만 $의 D 값을 전달할 수 따라서 기본값과 다른 모든 인수를 떠나는? 당신이 말한 것처럼
foo(null, null, null, 'bar');
나는 다음과 같은 기능이있는 경우 :기능
function foo($a = 'a', $b = 'b', $c = 'c', $d = 'd')
{
// Do something
}
내가이 함수를 호출 만 $의 D 값을 전달할 수 따라서 기본값과 다른 모든 인수를 떠나는? 당신이 말한 것처럼
foo(null, null, null, 'bar');
아니요, 불가능합니다. 사용 배열 :
function foo($args) {
extract($args);
echo $bar + $baz;
}
foo(array("bar" => 123, "baz" => 456));
php.net에 버그 리포트를 쓰기 언어로 명명 된 인수를 추가하도록 요청!
php.net에서 이름있는 인수를 묻는 버그 보고서를 작성하지 마십시오. 몇 년 동안 여러 권이 작성되었으므로 새로운 버그는 모두 중복됩니다. PHP에이 기능을 추가하기를 결정하지 않은 개발자들 사이의 주제에 관해 많은 논의가있었습니다 (심지어 최근까지도). 그러나 주제에 대해 [RFC] (https://wiki.php.net/rfc) 초안을 작성하고 [PHP 내부 메일 링리스트] (http://php.net/)에서 다시 토론하십시오. mailing-lists.php). 불행히도 – salathe
사실입니다. – salathe
당신은 널 (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);
을 당신은
foo(null, null, null, 'bar');
대안은 함수 서명에서 인수를두고하는 것입니다
, 사용처럼해야 func_get_args()
을 사용하여 값을 검색하십시오. 처음 세 null
값을 떠날 경우
function foo() {
$args = func_get_args();
는하지만 여전히, '바'는 $d
매개 변수임을 알 수있는 방법이 없다. 이 방식은 기능 서명을 난독 처리하고 성능을 저하시키기 때문에 대부분의 경우 바람직하지 않습니다.
짧은 대답 : 번호 긴 답변 : Nooooooooooooooooooooooooooooo.
변수가 전혀 설정되지 않은 경우 기본 인수 값이 사용됩니다.
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
왜 투표 했습니까? – diEcho
에 전달 된 인수의 수를 돌려줍니다.
이 경우 프로그램은 하나의 매개 변수 만 전달하면 네 번째 매개 변수라고 가정합니다.
가능한 경우 http://stackoverflow.com/questions/5968965/php-default-arguments – Yousf
@Quasdunk, 'foo (' ',' ',' ','bar ')와 같은 의미입니까? ? – freshest
PHP는 파이썬처럼 명명 된 인수를 지원하지 않으므로 모든 이전 인수를 전달해야합니다. 하지만 [이] (http : // stackoverflow.com/questions/7559305/php-passing-array-to-function/7559391 # 7559391) 당신을 도울 수 –