需求:
1、執行腳本後,想去的同學輸入英文名字全拼,產生隨機數01-99之間的數字,
數字越大就去參加項目實踐,前面已經抓到的數字,下次不能在出現相同數字。
2、第一個輸入名字後,屏幕輸出信息,並將名字和數字記錄到文件裡,程序不能退出
繼續等待別的學生輸入。
實現代碼(請在命令行執行,而非WEB環境):
<?php
// 號碼庫
$num = range(1, 99);
// 隨機打亂
shuffle($num);
$filename = './user.txt';
// 打開記錄文件
$handle = fopen($filename, 'w');
// 排序後的用戶列表
$user = array();
while (true) {
echo "\r\nEnter your name:";
$content = read();
// exit 退出腳本
if ($content == 'exit') {
break;
}
// 取出隨機值
$n = array_pop($num);
// 寫入文件
fwrite($handle, $n.' '.$content."\r\n");
$user[$n] = $content;
// 輸出到控制台
echo "Hi $content, your number is " . $n."\r\n";
}
// 關閉控制到輸入流
fclose($GLOBALS['StdinPointer']);
fwrite($handle, "\r\n");
fwrite($handle, '----------------華麗的分隔線-----------------');
fwrite($handle, "\r\n");
ksort($user);
foreach ($user as $k=>$v) {
fwrite($handle, $k.' '.$v."\r\n");
}
// 關閉文件
fclose($handle);
/**
* 獲取命令行輸入值
* @param string $length
* @return string
*/
function read($length='255'){
if (!isset($GLOBALS['StdinPointer'])){
$GLOBALS['StdinPointer']=fopen("php://stdin","r");
}
$line=fgets($GLOBALS['StdinPointer'],$length);
return trim($line);
}