2012-03-22 73 views
1

如何跳過第一個參數而不給函數調用中的任何值,以便第一個參數可以採用默認值NULL?如何將可選參數設置爲默認值而不通過?

function test($a = NULL, $b = true){ 
    if($a == NULL){ 
    if($b == true){ 
     echo 'a = NULL, b = true'; 
    } 
    else{ 
     echo ' a = NULL, b = false'; 
    } 
    } 
    else{ 
    if($b == true){ 
     echo 'a != NULL, b = true'; 
    } 
    else{ 
     echo ' a!=NULL, b = false'; 
     } 
    } 
} 

test();  //ok 
test(NULL); //ok 
test(5);  //ok 
test(5,false) //ok 
test(,false); // How to skip first argument without passing any value? ->PARSE error 

// i don' want to use default value for first argument, although test(NULL,false) 
// or test('',false) will work but can i skip first argument somehow? 
// i want to pass only second argument, so that first arg will be default set by 
// function 
+0

你必須將需要的PHP標準:) – 2012-03-22 10:33:40

回答

3

你不能只跳過PHP的爭論。

您可能希望考慮Perl技巧並使用關聯的數組。使用array_merge將參數與默認值合併。

例如

function Test($parameters = null) 
{ 
    $defaults = array('color' => 'red', 'otherparm' => 5); 
    if ($parameters == null) 
    { 
     $parameters = $defaults; 
    } 
    else 
    { 
     $parameters = array_merge($defaults, $parameters); 
    } 
} 

然後調用函數這樣

Test(array('otherparm' => 7)); 
0

您可以更改的參數的位置,也可以傳遞參數作爲數組,對於〔實施例:

test($options); 
+0

的變化,我不想做的要求,我只想設置第二ARG – 2012-03-22 10:30:09

+0

我沒有在最後看了你的意見...... – ventsislaf 2012-03-22 10:30:45

-1

你必須要使用的格式定義我的PHP函數標準

test("",false); 

你必須使用jQuery庫作品要求...用於傳遞其功能的參數。 但不是在PHP

+0

什麼實際@#$?這個答案絕對沒有意義! – m93a 2015-04-07 10:08:36

0

Redifine的功能

function test($b = true,$a = NULL){ 
//logic here 
} 

你可以這樣調用它的測試(5)避免第二個參數。

+0

這爲2 arg涼爽,但如果我想跳過5可選參數中的第三個參數? – 2012-03-22 10:33:45

+0

那麼你必須通過默認值NULL或0或其他任何東西。 – heyanshukla 2012-03-22 10:36:18

相關問題