iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
0
自我挑戰組

挑戰30天完成PHP聊天室範例系列 第 9

[Day09]第八章-混沌初始(五)-亂數、ID函數、迴圈

  • 分享至 

  • xImage
  •  

PHP的相關基礎語法,
介紹到這邊已經是倒數第二篇(先感謝願意進來看我廢話的各位),
在Day10會是基礎語法的最後一篇,
之後就會回到主題寫一個SOCKET聊天室.

今天來談談亂數,
基礎的php亂數函數:rand(最小值,最大值)

echo rand(0,100);
#會顯示0~100的隨機亂數

除了數字的亂數,也會想要用到有文字的亂數,
要作到這些要加上其他函數來輔助,
例如:str_shuffle(打亂字串)、md5(加密)、
substr(切割字串)等等,以下列幾個範例供參考.

#$str_len為所需字串長度
#原理是先把$str用str_shuffle()函數將字串打亂,再取得需要的長度字串,達到類似亂數的目的
function random_string($str_len){ 
$str = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$str_temp = str_shuffle($str);
return substr($str_temp, 0, $str_len); 
} 

#$characters[n-1],可以取得$characters字串裡第n個數
#原理是利用迴圈+亂數,每次從$characters取得一個隨機的字組成一個字串
function random_string($str_len) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $str_len; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}

再來介紹可以生成ID的函數,
uniqid() 函数是基於以微秒計的當前時間,
生成一個唯一的ID的函數.

PHP常用的迴圈有:
while、do while、for、foreach等.
先介紹while

/*開始時變數為1符合條件<=5,
而迴圈每執行一次,$num的內容會加1,當迴圈執行完第5次時($num=6),
就不符合執行條件<=5了
列印結果為:12345
*/
<?php 
$num=1; 
while($num<=5){ 
  echo $num; 
  $num++;  //$num=$num+1;的另一種寫法 
} 
?> 

再來介紹do while,do while與while很像,
唯一不同的是do while是在每一次執行完迴圈時才去判斷條件是否成立,
所以就算條件不成立,迴圈也會被執行一次.

<?php 
#列印結果為:12345
$num=0;
do{
  $num++;
  echo $num;
}while($num<5);
?> 

再來是foreach,foreach 不用寫條件判斷式就可以直接讀取陣列,結構有下列兩種
foreach ( 陣列 as $value ){...}
foreach ( 陣列 as $key => $value ){...}
第一個寫法foreach 會直接將陣列值存放到 $value 中,且將指向陣列的指針向前一歩,讓下次循環的時候能夠執行下一個陣列值,第二個差別在於多增加了把 array key 同時存放於 $key 之中,以方便後續的調用.

<?php
/*輸出結果為
鍋貼水餃漢堡
0鍋貼1水餃2漢堡 
*/
$Arr=array( "鍋貼" , "水餃" , "漢堡" );
foreach ($Arr as $value ){
 echo $value;
}
echo '<br>';
foreach ($Arr as $key => $value) {
 echo $key.$value;//key從0開始
}
?>

最後是for,他有三個參數分別是開始變數、執行條件、變動條件,
要注意執行條件和變動條件若沒設好,有可能會出現無窮迴圈.

<?php 
#顯示結果為12345
for($num=1;$num<=5;$num++){ 
  echo $num; 
} 
?> 

另外還有常用的迴圈函數continue(迴圈繼續)和break(迴圈跳出)可以使用.

這個篇章好像有點長阿XD,
有點好奇真的有人會點進來嗎QQ?
下一個篇章就是基礎篇的最後一篇,敬請收看唷!!


上一篇
[Day08]第七章-混沌初始(四)-判斷式
下一篇
[Day10]第九章-混沌初始終篇-陣列、資料庫連結
系列文
挑戰30天完成PHP聊天室範例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言