Day 39 (PHP)

1.阵列:一、二、三维

$a[0] = 123;            // 一维$a[1][0] = 10;          // 二维$a[1][2][3] = 'Brad';   // 三维$a[2] = array(1, 2, 3, 4, 5);var_dump($a);// array(3) { //     [0]=> int(123) //     [1]=> array(2) //     { //         [0]=> int(10) //         [2]=> array(1) {            //$a[1][2][3] = 'Brad';//             [3]=> string(4) "Brad" //         }  //             //      [2]=> array(5) {//         [0]=> int(1) //         [1]=> int(2) //         [2]=> int(3) //         [3]=> int(4) //         [4]=> int(5) //     } 

http://img2.58codes.com/2024/20137684bMA0GPEXpA.png


2.Q:为什么在同一层没有同时被输出?

http://img2.58codes.com/2024/20137684jc7H9JyEt0.png

A:是因为程式是一行一行跑,阵列的特性是门越后面越晚开,他是在$vv被输出

    //key[0][1][2] : value 123、array(2)、array(5)    foreach ($a as $k => $v) {    // $v看第一格[]array进下一层    if (gettype($v) == 'array') {        //key[0][2] : int(10)、array(1)        foreach ($v as $kk => $vv) {            // $vv看第二格[]array进下一层            if (gettype($vv) == 'array') {                // [3]=> string(4)                // $vvv看第三格[]array echo $vvv                foreach ($vv as $kkk => $vvv) {                    echo $vvv; // $vvv看第三格[] "Brad"                }            } else {                echo $vv; //$vv看第二格[] int(10)            }            echo '<br />';        }    } else {        echo $v;  //$v看第一格[] value 123    }    echo '<br />';

程式会先执行a[0]里面的所有
才会执行a[1]里面的所
最后在执行a[2]里的所
所以就算同一阶层
程式要执行完a[1]里面的所有东西
才会往a[2]迈进
执行顺序一律看第一个门


3.阵列画画~~

    $a[0] = 11;    $a[1] = array(111,222,333);    $a[2] = 33;    foreach($a as $k => $v){        echo $k . ':';        if (gettype($v) == 'array'){            foreach($v as $kk => $vv){                echo $vv . ' ';             }            echo '<br />';        }else{            echo $v . '<br />';        }    }

http://img2.58codes.com/2024/2013768438J1XqBoff.png


4.扑克牌抽抽v1~v3 (PHP04影片00:50)

do...while....至少做一次,再判断
实例:至少做一次抽牌再判断有没有重複

  $poker = array();    for ($i = 0; $i < 52; $i++){        do {            $temp = rand(0,51);                    // 检查机制            $isRepeat = false;             for ($j=0; $j<$i; $j++){                if ($poker[$j] == $temp){                    // 哇, 重複了                    $isRepeat = true;                    break;                }            }           }while($isRepeat);        $poker[] = $temp;        echo $temp . '<br />';    }    echo '---';

5.booling值变数的命名,要符合中文意义

   while($isRepeat); //$isRepeat这个有重複   有,进入印出        $poker[] = $temp;        echo $temp . '<br />';    }

6.PHP官方 使用API- Array

shuffle(洗牌)一堆不重複的资料打乱Range (扑克牌)

https://www.php.net/manual/en/function.array
https://www.php.net/manual/en/function.range.php

       $poker = range(0, 51); //照顺序的扑克牌1~52       shuffle($poker); //打乱        //只印出值(没有=>)       foreach ($poker as $v) {           echo $v . '</tr>';       }       echo "----<br>"

7.foreach($aaa as $bbb => $ccc)

有=>(的)才会有key与value,否则只有value

ex:

    foreach ($players as $player) {     //只取value        sort($player);        echo '<tr>';        foreach ($player as $card) {            echo "<td>";            echo $suits[(int)($card / 13)];            echo $values[$card % 13];            echo "</td>";        }        echo '</tr>';    }

8.思考方式:玩家怎么拿牌?

(1)玩家怎么拿牌?

    $players = [[], [], [], []]; //二维 发牌    foreach ($poker as $i => $card) {        $players[1?][2?] = $card;    }

http://img2.58codes.com/2024/20137684Ud65OrLqro.png

(2)观察key,跟除数有关

    $players = [[], [], [], []]; //二维 发牌    foreach ($poker as $i => $card) {        $players[$i % 4][(int)($i / 4)] = $card;    }

9.思考方式:画表格

4*13的表格
http://img2.58codes.com/2024/20137684IJwux3oMhn.png

1.先画大概

    <tr>    <td>123132</td>    <td>123132</td>    <td>123132</td>    <td>123132</td>    </tr>

2.製作第一笔内容

    <tr>        <?php        foreach ($players[0] as $card) {            echo "<td>{$card}</td>";        }        ?>    <tr>

3.把tr塞进去(因为每一圈都有)

        <?php        echo '<tr>';        foreach ($players[0] as $card) {            echo "<td>{$card}</td>";        }        echo '<tr>';        ?>

4.继续设定每一圈要做的事情

    <?php    //每个玩家($players)内的每一玩家($player)(players's key)内都要做一次    foreach ($players as $player) {        echo '<tr>';        //$players[0]改成$player:读取每个玩家手上的牌        foreach ($player as $card) {            echo "<td>{$card}</td>";        }        echo '<tr>';    }    ?>

5.放上牌样♠♥♦♣及牌面

    ♠<br>    ♥<br>    ♦<br>    ♣<br>    $suits = [        "♠",        "<font color='red'>♥</font>",        "<font color='red'>♦</font>",        "♣"    ];    $values = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K'];

http://img2.58codes.com/2024/201376847cOR1kvddR.png

6.计算出规则(♠♥♦♣%13各0.1.2.3.4....拿到key)

    foreach ($players as $player) {        echo '<tr>';        //player:读取每个玩家手上的牌        //计算出规则(♠♥♦♣%13各0.1.2.3.4....拿到key)        foreach ($player as $card) {            echo "<td>";            //除以13取整数(花色)            echo $suits[(int)($card / 13)];            //除以13取余数(牌面)            echo $values[$card % 13];            echo "</td>";        }        echo '</tr>';    }

7.排序sort

PHP官方
https://www.php.net/manual/en/function.sort

    foreach ($players as $player) {        sort($player);        echo '<tr>';        //player:读取每个玩家手上的牌        //计算出规则(♠♥♦♣%13各0.1.2.3.4....拿到key)        foreach ($player as $card) {            echo "<td>";            //除以13取整数(花色)            echo $suits[(int)($card / 13)];            //除以13取余数(牌面)            echo $values[$card % 13];            echo "</td>";        }        echo '</tr>';    }    ?>

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章