0

我在网上搜索一个随机密码生成器,我遇到了这段代码

<?php

function generatePassword($length=9, $strength=0) {
    $vowels = 'aeuy';
    $consonants = 'bdghjmnpqrstvz';
    if ($strength & 1) {
        $consonants .= 'BDGHJLMNPQRSTVWXZ';
    }
    if ($strength & 2) {
        $vowels .= "AEUY";
    }
    if ($strength & 4) {
        $consonants .= '23456789';
    }
    if ($strength & 8) {
        $consonants .= '@#$%';
    }

    $password = '';
    $alt = time() % 2;
    for ($i = 0; $i < $length; $i++) {
        if ($alt == 1) {
            $password .= $consonants[(rand() % strlen($consonants))];
            $alt = 0;
        } else {
            $password .= $vowels[(rand() % strlen($vowels))];
            $alt = 1;
        }
    }
    return $password;
}

?>

来自http://www.webtoolkit.info/php-random-password-generator.html

我只想问&是什么意思?这是一个合乎逻辑的 AND 他只是忘记添加另一个 & 吗?

4

3 回答 3

7

不,它是按位和。强度被用作标志,对于每个位集,辅音都会获得一组额外的字符连接到它。

于 2009-11-10T01:06:30.530 回答
3

它是按位和运算符。

于 2009-11-10T01:06:12.560 回答
2

单个“&”运算符是按位与。他用 1、2、4 和 8 的二进制表示对 $strength 进行与运算。

于 2009-11-10T01:06:31.343 回答