• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php随机打乱数组顺序保留键值(php对数组洗牌算法实现)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

https://zaoju.ipip5.com的网页时,想要实现每次访问显示造句例句的顺序不同。

目标:在不调用任何PHP内置函数的前提下,把一个数组顺序随机打乱,变相的洗牌算法。

思路:遍历数组,每一个元素都与另一个随机$key元素进行位置交换,关键在于随机$key的实现,马上就能调用的外部随机数,我只想到了时间戳和微秒数,就采取了截取微秒来生成随机$key,下面是相关代码。

 1 /*
 2 随机打乱数组顺序,不是调用任何PHP内置随机函数
 3  */
 4     error_reporting(0);
 5     $arr = range(1,100);
 6     print_r(shuffleDiy($arr));
 7     function shuffleDiy($arr){
 8         $len = count($arr);
 9         if($len<=1){
10             return $arr;
11         }
12         for($i=0;$i<$len;$i++){
13             $temp = $arr[$i];
14             $rand = getRandNum($len);
15             $arr[$i] = $arr[$rand];
16             $arr[$rand] = $temp;
17         }
18         return $arr;
19     }
20     //生成随机数函数,传值数组长度,获取微秒的几个数字,作为随机数
21     function getRandNum($len){
22         $max = strlen($len);
23         $mic = current(explode(' ',microtime()));
24         $micc = next(explode('.',$mic));
25         $res = intval(substr(strrev($micc), 2,$max));
26         while($res>=$len){
27             $res = intval($res/2);
28         }
29         return $res;
30     }

这样,我们每次访问造句网https://zaoju.ipip5.com时显示的造句例句就不同了!ok,nice!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
利用PHPSOAP扩展实现简单WebServices发布时间:2022-07-10
下一篇:
centos中安裝php-opcache发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap