оператор присваивания (=) в списке параметров функции? - PullRequest
2 голосов
/ 17 августа 2010

Я использую следующий код из 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)список параметров функции.Что это делает?

Ответы [ 3 ]

8 голосов
/ 17 августа 2010

Это означает, что если вы вызываете функцию следующим образом:

$a = bitMask();

Тогда $ mask будет установлен на 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 голосов
/ 17 августа 2010

Это значение по умолчанию для $ mask, если аргументы не передаются.Это также предотвращает генерирование предупреждения, когда параметр не указан.

0 голосов
/ 14 сентября 2016

Майкл ответ правильный.Чтобы добавить к этому, обратите внимание, что назначение не повлияет на исходную измененную переменнуюВот его код с несколькими другими заданиями / эхом, иллюстрирующими это:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...