与数组编程题相关的问题

与数组编程题相关的问题

<?php
$a=range(0,9);
$b=range('a','z');
$c=range('A','Z');
//验证码可以是数字,小写字母或大写字母,将$a,$b,$c合并成一个数组$newArr
$newArr = array_merge($a,$b,$c);
//print_r($newArr);

//1.请在这里使用for循环从数组$newArr随机抽取四个元素组成四位验证码并输出
echo '生成的验证码为:';
$str1 = null;
for($n=1;$n<=4;$n++){
    $str1 .= $newArr[mt_rand(0,count($newArr)-1)];
}
echo $str1.'<br/>';

//2.请在这里使用数组函数array_rand()、array_flip(),join()生成四位验证码并输出
echo '生成的验证码为:';
$arr_flip = array_flip($newArr);
//print_r($arr_flip);
$str2 = null;
for($j=0;$j<4;$j++){
    $arr_rand = array_rand($arr_flip);
    $str2 .=$arr_rand;
}
//$arr_rand = array_rand($arr_flip);
echo $str2.'<br/>';

这样做可以么?,里面-题目要求2-,我没用到join()这个函数,我只想到前两个函数,请老师指点指点,array_rand()、array_flip(),join(),这3个函数来生成。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

array_rand ($array[, int $num=1] )     

从数组中随机取出一个或多个单元,并返回随机条目的一个或多个'键'。

array 输入的数组。

num 指明了你想取出多少个单元。   

使用array_rand()函数不需要再次循环

$str = join(array_rand(array_flip($arr_flip),4));
//1.array_flip将数组键值键名互换
//2.array_rand随机取4个单元
//3.jion将取出的值转化为字符串
echo '生成验证码为:',$str;


  • 是的,将数组键值名互换以后,使用array_rand取出四个元素的数组,然后join连接。
    2017-06-28 18:00:13
  • 羽澜星 提问者 #2
    非常感谢!
    2017-06-28 21:14:35
imooc_澈 2017-06-28 17:23:06

您好,在您贴出的代码中,for循环里使用array_rand()函数,循环四次,每次取出数组中的一个元素键,拼接在一起形成4位验证码,如果不使用for循环,直接使用array_rand($arr_flip,4)就可以得到一个随机的数组,里面包含四个元素,再使用join函数 join('',$array_rand)将数组中的四个元素连接在一起就能得到四位验证码了。如果解决了您的问题,请采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师