$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)
// }
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]迈进
执行顺序一律看第一个门
$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 />';
}
}
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 '---';
while($isRepeat); //$isRepeat这个有重复 有,进入印出
$poker[] = $temp;
echo $temp . '<br />';
}
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>"
有=>(的)才会有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>';
}
$players = [[], [], [], []]; //二维 发牌
foreach ($poker as $i => $card) {
$players[1?][2?] = $card;
}
$players = [[], [], [], []]; //二维 发牌
foreach ($poker as $i => $card) {
$players[$i % 4][(int)($i / 4)] = $card;
}
4*13的表格
<tr>
<td>123132</td>
<td>123132</td>
<td>123132</td>
<td>123132</td>
</tr>
<tr>
<?php
foreach ($players[0] as $card) {
echo "<td>{$card}</td>";
}
?>
<tr>
<?php
echo '<tr>';
foreach ($players[0] as $card) {
echo "<td>{$card}</td>";
}
echo '<tr>';
?>
<?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>';
}
?>
♠<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'];
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>';
}
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>';
}
?>
<<: Vue 在 Localhost 开发时出现 “[prerender-spa-plugin] Unable to prerender all routes!” 错误的解决方式
之前介绍 git reset 时,有提到说使用 git reset 指令时,有三种常用来搭配的参数模...
数位 I/O 视窗当然是要有数位讯号相关功能啦。 数位 I/O 功能 在 Supported Mod...
SAP C_TPLM30_67 is the third version of SAP C_TPLM...
想练成 Blue Prism太极拳吗? 忘记所有的招式吧! (以上画面撷取自网路) 或许有点年纪的人...
还记得先前提到 Math.random 并非是纯函式吗,因为每次给定相同的输入都会是不同的输出回传回...