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