隨著時代的發展,我們的編程技術也越來越多,對於PHP想必大家都很了解吧,我們這裡就介紹一下PHP數組吧。PHP數組是最常見的批量數據存儲結構,由於數組采用順序存儲,所以可以方便的進行隨機存儲。在很多語言中,數組都是靜態的,必須在使用前指定數組的長度,而在PHP中,你完全不用操心這個問題,數組是完全動態的。你甚至可以這樣來使用一個數組。
- PHP CODE
- // DEMO of Array
- demo_array[] = 1;
- demo_array[] = 2;
然後,我們來模擬洗牌的過程,這實際上是若干次的兩張牌交換的過程。我們產生兩個在1~108之間的隨機數,然後交換以這兩個數為index的數組元素的值就可以了。因為要多次交換,我們可以把這個過程定義為一個函數。接著,就是把這108張牌分給4個人,實際上,只要前邊的交換次數足夠大,直接切成5份就OK了。不過為了更好的模擬現實和表現數組的特性,我們采用循環的方式來分發。就是每個人一次四張,然後一個人一張,莊家兩張。好了,整個過程就是這樣的了。下邊我們通過程序來說明一些更為細節的東西。
- PHP CODE
- <?php
- /** ************************************************************
- * 一個使用數組來模擬麻將洗牌和發牌過程的例子
- * @ [email protected]
- * @ 2003-6-3
- ** *************************************************************/
- // 換牌函數
- function swap()
- {
- // 將$majiangArray定義為全局變量
- // 這樣可以在函數中進行操作
- global $majiangArray;
- // 產生兩個1到108的隨機數
- $index1 = rand( 1 , 108 );
- $index2 = rand( 1 , 108 );
- // 交換相應的數組元素的值
- $tmp = $majiangArray[ $index1 ];
- $majiangArray[ $index1 ] = $majiangArray[ $index2 ];
- $majiangArray[ $index2 ] = $tmp;
- }
- // 將數組的內容用相應的圖片表示出來的函數
- function showArray( $arrayName )
- {
- $countcount = count ( $arrayName );
- for ( $i = 0 ; $i < $count ; $i++ )
- {
- echo '<img src="img/'. $arrayName[ $i ] .'"> ';//顯示相應的圖片
- }
- echo '<p>';//換行
- }
- // 主程序部分開始
- // 初始化數組
- unset( $majiangArray );
- $majiangArray[] = '0'; // 數據從1開始存放,跳過0
- for ( $i = 1 ; $i <= 3 ; $i++ )// 共有三種花色
- {
- for ( $j = 1 ; $j <= 9 ; $j++ )// 一個花色中有九種牌
- {
- for ( $k = 1 ; $k <= 4 ; $k++ )// 每種牌有四張
- {
- $majiangArray[] = $i . '_' . $j . '.gif';
- }
- }
- }
- // 開始洗牌
- for ( $i = 1 ; $i <= 1000 ; $i ++ )// 循環變量i被重新賦值重用
- {
- swap();
- }
- // 初始化四個用戶
- unset( $user1 );
- unset( $user2 );
- unset( $user3 );
- unset( $user4 );
- // $seek是進度指針,紀錄當前應該從那裡發牌
- $seek = 1;
- for ( $i = 1 ; $i <= 3 ; $i++ )// 總共摸三次四張的
- {
- for ( $j = 1 ; $j <= 4 ; $j++ )// 四個人
- {
- for ( $k = 1 ; $k <= 4 ; $k++ )// 一次四張
- {
- $name = 'user'.$j;
- ${$name}[] = $majiangArray[ $seek++ ];
- }
- }
- }
- // 然後一人一張
- for ( $i = 1 ; $i <= 4 ; $i++ )
- {
- $name = 'user'.$i;
- ${$name}[] = $majiangArray[ $seek++ ];
- }
- // 最後莊家多摸一張
- $user4[] = $majiangArray[ $seek ];
- // 分牌結束 顯示結果
- showArray( $user1 );
- showArray( $user2 );
- showArray( $user3 );
- showArray( $user4 );
- ?>