在我正在创建的页面上,有一个带有五个隔间的鸽笼的图形表示,以供新评论使用。如果有新的未读评论,它应该在一个随机区域中显示为图形。但如果全部5个都不会发生 已经占领了。因此,如果有人写了新的评论,我喜欢代码来检查是否已经有五个被采用,如果不是,那么就要随机占用剩下的一个。所以“new_c”代表的数量 未读(新)注释,c1-c5代表隔离专区。值0表示每个“c”的空隔间。我试图制作代码,在知道数字小于5后,首先将new_c与数组的其余部分分开, 所以我只用了5个隔间。而不是确定哪一个是空的。然后随机选择一个空占用。它并没有真正起作用,因为我可能没有正确使用该array_keys,因为c2被更改为0以外的其他值但仍然被回显,可能还有更好/更有效的方法来实现它。我真的很感激一些意见。
<?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;
}
?>
Bellow代码有效,但它看起来效率不高,可能有更好的方法。
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;
}