在函数的参数列表中赋值运算符(=)?

时间:2010-08-17 02:23:01

标签: php function parameters

我正在使用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;
}

我对函数参数列表中($mask = 0)的“= 0”部分感到有些困惑。那是做什么的?

3 个答案:

答案 0 :(得分:8)

这意味着如果你调用这样的函数:

$a = bitMask();

然后$ mask将设置为0

如何在函数中为参数设置默认值。

示例:

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

example(10);
example();

输出:

a = 10
a = 0

如果$a没有设置默认值,那么调用example()之类的函数会发出警告。

reference:http://php.net/manual/en/functions.arguments.php(默认参数值)

答案 1 :(得分:3)

如果没有传递参数,则这是$ mask的默认值。这也可以防止在省略参数时生成警告。

答案 2 :(得分: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