[英]How do I loop through an Array, and remove the key with lowest value
我正在嘗試制作一個程序,該程序在分配有隨機數的數組中具有不同的玩家。 它是基於回合的,因此每一輪玩家都會被分配新的隨機數,並且從數組中刪除數字最小的玩家。
問題是迭代時它不會從數組中刪除具有最低數字的播放器。 然而,它確實會打印出數字最低的玩家,但就是這樣......
我希望它刪除一個或多個玩家並在每一輪顯示他們的名字,直到剩下一個。
我是學習 PHP 的新手,所以我的代碼結構不是最好的 xd
$players = array(
"Peter" => "0",
"John" => "0",
"Harold" => "0",
"Alexander" => "0",
"Thor" => "0",
"Paul" => "0",
"Jimmy" => "0",
"Erik" => "0",
"Donald" => "0",
"Matthew" => "0"
);
for($i = 0; $i < count($players); $i++){
echo "<br>" . "<b>Round ". (1 + $i) ."</b><br>";
foreach($players as $key => $value){
//generating random number to value
$value = rand(1,50);
asort($players);
//Assigning each player a random number
$players[$key]=$value;
$min = min($players);
array_splice($players,$min));
}
echo "Player(s) with lowest number is: " .current(array_keys($players, min($players)));
echo "<br>"
}
我建議您使用while
代替for-loop
:
$players = array(
"Peter" => "0",
"John" => "0",
"Harold" => "0",
"Alexander" => "0",
"Thor" => "0",
"Paul" => "0",
"Jimmy" => "0",
"Erik" => "0",
"Donald" => "0",
"Matthew" => "0"
);
$round = 1;
while (count($players) > 1) {
echo "<br>" . "<b>Round " . $round . "</b><br>";
foreach ($players as $key => $value) {
do {
$value = rand(1, 50);
} while(in_array($value, $players));
$players[$key] = $value;
}
$key = array_keys($players, min($players))[0];
echo "Player(s) with lowest number is: " . $key;
echo "<br>";
unset($players[$key]);
$round++;
}
echo '<br>The winner is:'. key($players);
我改變了什么?
while
邏輯“在直到數組計數為一時繼續”(所以只是贏家do-while
為每個玩家生成不同的號碼(唯一號碼)min()
然后取消設置。參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.