2010-08-17 32 views
2

我使用下面的代碼從PHPBuilder.com來處理我的網站上用戶權限:賦值運算符(=)在函數的參數列表中嗎?

/** 
* Correct the variables stored in array. 
* @param integer $mask Integer of the bit 
* @return array 
*/ 
function bitMask($mask = 0) { 
    if(!is_numeric($mask)) { 
     return array(); 
    } 
    $return = array(); 
    while ($mask > 0) { 
     for($i = 0, $n = 0; $i <= $mask; $i = 1 * pow(2, $n), $n++) { 
      $end = $i; 
     } 
     $return[] = $end; 
     $mask = $mask - $end; 
    } 
    sort($return); 
    return $return; 
} 

和我有點受「= 0」的($mask = 0)在函數參數列表部分百思不得其解。這是做什麼的?

回答

8

這意味着,如果你這樣調用該函數:

$a = bitMask(); 

然後$面具將被設置爲0

這是如何在函數中設置參數的默認值。

例子:

function example($a=0){ 
    echo "a = $a"; 
} 

example(10); 
example(); 

輸出:

a = 10 
a = 0 

如果$a沒有一個默認值設置,然後調用像example()功能將給予警告。

參考:如果沒有傳遞參數http://php.net/manual/en/functions.arguments.php(默認參數的值)

3

這就是$默認值掩蓋。這還可以防止在省略參數時生成警告。

0

邁克爾的回答是正確的。要添加到它,請注意該分配不會影響修改的原始變量。這裏是他的代碼有幾個任務/回聲來說明這一點:

function example($a=0){ 
    echo "Entering function: a = $a\n"; 
    $a = 3; 
    echo "End of function: a = $a\n"; 
} 

$a = 7; 
example(10); 
echo "Outside of Function: a = $a\n"; 

輸出

Entering function: a = 10 
End of function: a = 3 
Outside of Function: a = 7