PHP实现命令行随机排号系统
利用PHP脚本在命令行中实现学生或成员的随机排号系统,支持01-99不重复数字分配与本地文件持久化存储。
结果与准备
本方案旨在解决需要快速抽取且不重复编号的场景(如课堂互动、项目实践分组)。运行环境需为标准命令行终端,非WEB服务器环境。
第1步:配置号码池与初始化文件
目的:建立可用的数字范围并创建记录载体。
首先使用 range(1, 99) 生成包含1到99整数的数组,随后通过 shuffle($num) 将数组元素彻底打乱,形成随机序列。设定目标文件名为 ./user.txt,并使用 fopen($filename, 'w') 模式打开,清空旧数据准备写入。
<?php
// 号码库
$num = range(1, 99);
// 随机打乱
shuffle($num);
$filename = './user.txt';
// 打开记录文件
$handle = fopen($filename, 'w');
$user = array();
// ... 后续循环逻辑
第2步:构建交互式输入循环
入口:命令行终端。
动作:持续等待用户输入并分配号码。
使用无限循环 while (true) 保持程序不退出。定义辅助函数 read() 用于获取标准输入流(php://stdin)的内容。当输入为 exit 时跳出循环终止程序;否则从被打乱的 $num 数组中取出最后一个元素 array_pop 作为当前用户的唯一编号。
while (true) {
echo "\r\nEnter your name:";
$content = read(); // 假设已定义read函数
if ($content == 'exit') {
break;
}
// 取出随机值
$n = array_pop($num);
// ... 保存逻辑
}
第3步:实时记录与输出反馈
参数:文件名 $filename,句柄 $handle。
完成状态:控制台显示欢迎信息,文件中新增一行记录。
每次分配后,将编号和名字通过 wfwrite 追加写入文件,格式为 编号 名字\r\n。同时在控制台打印反馈,例如 Hi User, your number is 55,便于操作者确认。
$user[$n] = $content;
echo "Hi $content, your number is " . $n."\r\n";
第4步:收尾处理与排序
目的:清理输入流并对数据进行结构化备份。
当循环结束(用户输入 exit),关闭输入流 fclose($GLOBALS['StdinPointer'])。接着写入分隔线以标记正式数据开始。此时内存中的 $user 数组是以随机号为键的,使用 ksort($user) 按键(即编号)从小到大排序,再次遍历并将有序数据写入同一文件,确保最终文本文件是按编号排列的清单。
// 关闭控制到输入流
fclose($GLOBALS['StdinPointer']);
fwrite($handle, "\r\n----------------华丽的分隔线-----------------");
fwrite($handle, "\r\n");
ksort($user);
foreach ($user as $k=>$v) {
fwrite($handle, $k.' '.$v."\r\n");
}
fclose($handle); // 关闭文件
总结
该脚本展示了 PHP 在处理命令行交互、随机算法以及本地 I/O 操作上的简易实现方式。通过不断从预打乱列表中取值,天然实现了号码的不重复性;配合文件写入功能,使得每一次排号过程都有据可查。以上就是PHP实现的英文名字全拼随机排号脚本的详细内容,更多关于PHP命令行应用开发资料的关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













