2010-08-17 87 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