Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将函数与不同的调用方法相结合_Php - Fatal编程技术网

Php 将函数与不同的调用方法相结合

Php 将函数与不同的调用方法相结合,php,Php,我有两个功能 这只会生成数字 //Generate a string of only numbers. function GenerateNUM($length) { $alphabet = '1234567890'; $tip = array(); $alphaLength = strlen($alphabet) - 1; for ($i = 0; $i < $length; $i ++) { $n = rand(0, $alphaLeng

我有两个功能

这只会生成数字

//Generate a string of only numbers.
function GenerateNUM($length)
{
    $alphabet = '1234567890';
    $tip = array();
    $alphaLength = strlen($alphabet) - 1;
    for ($i = 0; $i < $length; $i ++) {
        $n = rand(0, $alphaLength);
        $tip[] = $alphabet[$n];
    }
    return implode($tip);
}
还是这个

$ValidationCode = GenerateAll(12);

它工作得很好,但我的问题是我真的需要2块代码吗?有没有一种方法可以创建一个函数,并能够决定是调用数字和字母,还是只调用数字?还是我想得太多了?

基于代码的组合奇异函数示例:

function GenerateCode($length,$type='ALPHA')
{
    $alphabet = (($type == 'ALPHA')?'ABCDEFGHIJKLMNOPQRSTUVWXYZ':'') .'1234567890';
    $code = array();
    $alphaLength = strlen($alphabet) - 1;
    for ($i = 0; $i < $length; $i ++) {
        $n = rand(0, $alphaLength);
        $code[] = $alphabet[$n];
    }
    return implode($code);
}

$ValidationCode = GenerateCode(12,'NUM');// just makes a numbers only code
$ValidationCode = GenerateCode(12,'ALPHA');// makes an alphanumeric code
函数生成代码($length,$type='ALPHA')
{
$alphabet=(($type='ALPHA')?'ABCDEFGHIJKLMNOPQRSTUVXYZ':'')。'1234567890';
$code=array();
$alphaLength=strlen($alphabet)-1;
对于($i=0;$i<$length;$i++){
$n=兰特(0,$alphaLength);
$code[]=$alphabet[$n];
}
返回内爆($code);
}
$ValidationCode=GenerateCode(12,'NUM');//只做一个数字代码
$ValidationCode=GenerateCode(12,'ALPHA');//生成字母数字代码

但是,多个小效用函数并没有什么错。命名使他们保持干净,并明确他们的意图。但是,如果在一组实用程序函数之间有大量重复的代码,则可以将它们与第二个参数组合,并根据该参数调整内部的小片段(如上所述)


生成类似于函数的随机字符串的更好示例(包括大写和小写字母):

函数生成代码($length,$type='ALPHA')
{
$string='';

对于($n=1;$n)您是否尝试过
GenerateStuff($length,$type)
…?然后只需在$type上的函数内部分支即可?不过多个小型实用程序函数没有问题。命名可以保持它们的干净性并明确它们的意图。但是如果在一组实用程序函数之间有大量重复的代码,则可以将它们与第二个参数组合,并根据在param。我没有尝试过,但对于类型,我如何排除其中一个?因此,如果我放置ALPHA,它将只执行ALPHA,如果我放置Num,它将仅自动生成Num?但有时我希望一起生成所有。请参见我的示例中的合并答案。如果您希望合并。
$ValidationCode = GenerateAll(12);
function GenerateCode($length,$type='ALPHA')
{
    $alphabet = (($type == 'ALPHA')?'ABCDEFGHIJKLMNOPQRSTUVWXYZ':'') .'1234567890';
    $code = array();
    $alphaLength = strlen($alphabet) - 1;
    for ($i = 0; $i < $length; $i ++) {
        $n = rand(0, $alphaLength);
        $code[] = $alphabet[$n];
    }
    return implode($code);
}

$ValidationCode = GenerateCode(12,'NUM');// just makes a numbers only code
$ValidationCode = GenerateCode(12,'ALPHA');// makes an alphanumeric code
function GenerateCode($length,$type='ALPHA')
{
    $string = '';
    for ($n=1; $n <= $length; $n++) {
        if ($type == 'NUM') {
            $string .= mt_rand(0,9);
        } else {
            $randnum = mt_rand(0,61);
            $string .= ( ($randnum < 10) ? chr($randnum+48) :  // number chr 48 - 57
                        (($randnum < 36) ? chr($randnum+55) :  // upperletter chr 65 - 90
                                           chr($randnum+61) ));// lowerletter chr 97 - 122
        }
    }
    return $string;
}

// example GenerateCode(12,'ALPHA') output: XNu1n833b2ox