从php数组中提取特定的随机值
在我正在创建的页面上,有一个鸽子洞的图形表示,有五个隔间供新评论使用。如果有新的未读评论,它应该显示为一个随机隔间的图形。但如果这5个都是 已经被占用了。因此,如果有人写了新的评论,我喜欢用代码检查是否已经有五条评论被引用,如果没有,则随机占用剩余的一条评论。所以new_c代表 未读的新注释,c1-c5代表隔间。值0表示每个c的空隔室。我试图编写一段代码,在知道新的_c数小于5后,首先将它与数组的其余部分分开, 所以我只使用5个隔间。然后确定哪个是空的。然后随机选择一个空的来占据。它实际上不起作用,因为我可能没有正确地使用数组_键,因为c2被更改为除0以外的其他值,但仍在回响,可能还有更好/更有效的方法来实现这一点。我将非常感谢您的意见从php数组中提取特定的随机值,php,arrays,Php,Arrays,在我正在创建的页面上,有一个鸽子洞的图形表示,有五个隔间供新评论使用。如果有新的未读评论,它应该显示为一个随机隔间的图形。但如果这5个都是 已经被占用了。因此,如果有人写了新的评论,我喜欢用代码检查是否已经有五条评论被引用,如果没有,则随机占用剩余的一条评论。所以new_c代表 未读的新注释,c1-c5代表隔间。值0表示每个c的空隔室。我试图编写一段代码,在知道新的_c数小于5后,首先将它与数组的其余部分分开, 所以我只使用5个隔间。然后确定哪个是空的。然后随机选择一个空的来占据。它实际上不起作
<?php
$tucQuery = "SELECT new_c,c1,c2,c3,c4,c5 FROM users WHERE id = '{$author_id}' LIMIT 1";
$result_tuc = mysqli_query($connection, $tucQuery);
$tucArray = mysqli_fetch_assoc($result_tuc);
mysqli_free_result($result_tuc);
$new_c = $tucArray[0];
if($new_c < 5){
$new_array = array_keys((array_slice($tucArray,1)), 0);
$rand_zero = array_rand($new_array, 1);
echo $rand_zero + 1;
}
?>
下面的代码可以工作,但似乎效率不高,可能还有更好的方法
if($new_c < 5){
$empties = array();
if($tucArray['c1'] == 0){
$empties[] = 1;
}
if($tucArray['c2'] == 0){
$empties[] = 2;
}
if($tucArray['c3'] == 0){
$empties[] = 3;
}
if($tucArray['c4'] == 0){
$empties[] = 4;
}
if($tucArray['c5'] == 0){
$empties[] = 5;
}
print_r($empties);
$rand_zero = array_rand((array_flip($empties)), 1);
echo $rand_zero;
}
mysqli_fetch_数组是导致问题的原因,我已将其更改为mysqli_fetch_assoc,它现在工作正常。如果有人愿意的话,我仍然希望得到一些意见,因为可能有一种更有效的方法来实现这一点。@Mihai我已经在你提到的网站上提出了这个问题,它被搁置了,因为不允许发布坏代码。如果您知道任何其他网站,提供有关代码的建议,请让我知道。