老师,可以给我详细解释下这个编程练习的运行过程吗有点不懂
来源:2-13 编程练习
weixin_慕姐0507771
2019-03-28 18:28:24
<?php
$num='0123456789';
$let='abcdefghijklmnopqrstuvwxyz';
$LET='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$str=$num.$let.$LET;//从该给定的字符串中随机抽取元素组成定长的字符串
$len=strlen($str);
for ($i=1;$i<=4;$i++){
$str1.=substr($str,mt_rand(0,$len-1),1);
}
echo '验证码是:'.$str1;
2回答
weixin_慕姐0507771
提问者
2019-03-28
谢谢老师懂了
好帮手慕查理
2019-03-28
您好,随机数的要随机的是数字、小写字母、大写字母,所以定义了三个变量分别赋值为数字、小写字母、大写字母组成的字符串,也就是:
$num='0123456789'; $let='abcdefghijklmnopqrstuvwxyz'; $LET='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
但是我们需要这三种情况都有可能出现在验证码中,那么便可以把三个变量拼接成一个变量,也就是:存储的数字、小写字母、大写字母。
$str=$num.$let.$LET;
此时开始循环,验证码为四个字符,因此循环为:for ($i=1;$i<=4;$i++){}。
每次循环得到一个字符,然后将字符拼接到$str1变量上,这样当循环完四次的时候,$str1变量上就拼接了四个字符。
而每次得到的字符是从$str变量中取得的,是使用substr函数取出一个字符,现在已知取一个字符和字符串变量是$str,那么从什么位置截取一个呢?此时是用的mt_rand生成一个随机数,从这个随机数的位置取长度为1的字符,但是$str变量的长度是固定的,如果随机数不在$str变量长度范围则取不到值了,因此在循环外计算了$str变量的长度:$len=strlen($str);,此时在循环则是mt_rand(0,$len-1)。(随机数是从0开始,所以会将变量的长度-1)。也就是:
for ($i=1;$i<=4;$i++){ $str1.=substr($str,mt_rand(0,$len-1),1); }
最终将$str1变量输出:
echo '验证码是:'.$str1;
注意$str1由于是拼接,所以要在循环外定义一个初始值即$str1="";。如果解决了您的问题,请采纳。祝学习愉快!
相似问题
回答 3
回答 1