[爆卦]php二維陣列是什麼?優點缺點精華區懶人包

為什麼這篇php二維陣列鄉民發文收入到精華區:因為在php二維陣列這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者cleanwind (骨傲風清(掛網))看板PHP標題Re: [請益] 求救 亂數發牌時間Thu...


這東西真的有點難度 XD

給你幾個做法!

首先你要有一個陣列姑且叫他 $cardArray[52] 或 $cardArray[4][13]

你可以使用一維,也可以使用二維

一維的陣列將 key(也就是52) 值除以13 取整數當做花色,取餘數 + 1 當點數;

二維的陣列就第一維當作花色,第二維的 key + 1 當點數。


接著你要洗牌,洗牌有兩種方法!

1.直接使用 shuffle ,不過二維陣列不適用。

而且有天你碰到 C C++ C# 你會發現,沒有 Shuffle 可以用。

(而且我相信老師也不是要你這樣寫,當然如果我這樣寫老師說 No
我會和他爭論,不過前提是你要夠了解這個東西 XD)

2.另設個變數 $tmp ,從陣列隨機取一個值出來存進 $tmp

再隨機取另一值丟進剛剛隨機值的位子,最後再把 $tmp 丟回第二個隨機值的位子。

真饒舌,總而言之像是

$tmp = $A;
$A = $B;
$B = $tmp;


可不可以不洗牌?

可以你也可以另取一個陣列,隨便你要叫他什麼,

叫做 $card2Array 好了

然後利用 array_rand() 去隨機取值,

可是這樣可能會取到重複的 value ,怎辦?

$i = 0;
while($i < 20) {
$tmp = array_rand($cardArray);
if(!in_array($tmp,$card2Array)) {
$card2Array[$i] = $tmp;
$i ++;
}
}


以上的方法不管是一維還是二維都可以,

只是二維陣列你可能要先用亂數決定花色再決定點數。



最後再把 $cardArray 發給四個人,怎麼發?

for($i = 0 ; $i < 4 ; $i ++) {
for($j = 0 ; $j < 5 ; $j ++) {
echo $cardArray[$i*4 + $j];
}
}

就這樣發完了!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.168.222
jimpop:精華區有array_rand可以直接取不重複的數 05/15 08:59
jimpop:$b = array_rand(range(1, 60), 25); 05/15 08:59
jimpop:這樣就是取1~60中25個不重複的數字 05/15 09:00
forwardsky:謝謝所有大大幫我解答.. 05/16 18:03

你可能也想看看

搜尋相關網站