从php数组中提取特定的随机值

从php数组中提取特定的随机值,php,arrays,Php,Arrays,在我正在创建的页面上,有一个鸽子洞的图形表示,有五个隔间供新评论使用。如果有新的未读评论,它应该显示为一个随机隔间的图形。但如果这5个都是 已经被占用了。因此,如果有人写了新的评论,我喜欢用代码检查是否已经有五条评论被引用,如果没有,则随机占用剩余的一条评论。所以new_c代表 未读的新注释,c1-c5代表隔间。值0表示每个c的空隔室。我试图编写一段代码,在知道新的_c数小于5后,首先将它与数组的其余部分分开, 所以我只使用5个隔间。然后确定哪个是空的。然后随机选择一个空的来占据。它实际上不起作

在我正在创建的页面上,有一个鸽子洞的图形表示,有五个隔间供新评论使用。如果有新的未读评论,它应该显示为一个随机隔间的图形。但如果这5个都是 已经被占用了。因此,如果有人写了新的评论,我喜欢用代码检查是否已经有五条评论被引用,如果没有,则随机占用剩余的一条评论。所以new_c代表 未读的新注释,c1-c5代表隔间。值0表示每个c的空隔室。我试图编写一段代码,在知道新的_c数小于5后,首先将它与数组的其余部分分开, 所以我只使用5个隔间。然后确定哪个是空的。然后随机选择一个空的来占据。它实际上不起作用,因为我可能没有正确地使用数组_键,因为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;
        }

?>
下面的代码可以工作,但似乎效率不高,可能还有更好的方法

        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我已经在你提到的网站上提出了这个问题,它被搁置了,因为不允许发布坏代码。如果您知道任何其他网站,提供有关代码的建议,请让我知道。