惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
博客园 - 叶小钗
F
Fortinet All Blogs
GbyAI
GbyAI
Martin Fowler
Martin Fowler
博客园 - 聂微东
I
InfoQ
B
Blog
IT之家
IT之家
美团技术团队
L
LangChain Blog
小众软件
小众软件
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
Last Week in AI
Last Week in AI
A
About on SuperTechFans
博客园 - Franky
P
Proofpoint News Feed
罗磊的独立博客
月光博客
月光博客
V
Visual Studio Blog
MyScale Blog
MyScale Blog

博客园 - 大象已无形

深度体验汉字吧(hanzi8.com):一个被低估的汉语学习利器 从0到1构建一个汉字学习平台:汉字吧(hanzi8.com)的技术架构猜想 从0到1构建一个汉字学习平台:汉字吧(hanzi8.com)的技术架构猜想 查字典还在翻纸质书?这个宝藏网站让你一秒变"汉语通" 一次说清各种大模型Coding Plan五小时额度、周额度、月额度限制机制 私传网(Send.wang):一款基于 WebRTC 技术的纯网页端点对点(P2P)文件传输工具 【教程评测】SendTomo VS send.wang 文件传输工具 详细功能对比表 Send.wang 使用教程:免安装跨平台文件互传神器 SendTomo:一款主打无需安装、无限制、不限速、P2P直连的跨设备文件传输工具 练字有神器,写字更高效!专业在线字帖生成器‌ 【技术解析】藏在你浏览器里的黑科技:WebRTC到底是什么?我用它传完了30G的视频素材 怎么用SendTomo在电脑和手机之间互传文件 还在为网站图标发愁?这个免费在线工具,3秒搞定专业ICO图标在线生成 【SendTomo】电脑、笔记本、手机之间大文件高速互传的最佳选择 电脑手机传输大文件,不安装APP不靠网盘,浏览器就行 无需注册、无需上传:用SendTomo在浏览器里点对点传大文件 真正的免费不限速——SendTomo可能是最好的网页传文件工具 不用微信、QQ,怎么跨平台传超大文件? 网页版P2P文件传输是什么原理?安全吗? 有没有一个网站打开就能传文件,不需要安装软件? 怎么把大文件免费传给对方,不用上传网盘? Sudoku1-9.com 数独题目大全 — 网站平台功能介绍与使用教程 推荐一款基于网页的免费P2P直连跨设备传输工具:SendTomo 教程步骤 | 纯网页化的P2P传输工具SendTomo详细使用步骤 SendTomo:跨平台跨网络远程P2P直连文件传输工具的终极选择 SendTomo和其他同类文件传输工具相比有什么优势? 一款基于网页的P2P直连跨设备传输工具:SendTomo 对比评测|SendTomo vs 微信“文件传输助手”:专业工具 vs 社交附庸,谁才是真正的跨设备传输利器? 一款跨平台大文件传输工具:SendToMo 功能实测总结 问题解答|SendToMo 传输文件安全吗?
php随机打乱数组顺序保留键值(php对数组洗牌算法实现)
大象已无形 · 2021-12-30 · via 博客园 - 大象已无形

需求:日前在做一个词语造句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!