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

时间:2015-03-29 15:06:12

标签: php arrays

在我正在创建的页面上,有一个带有五个隔间的鸽笼的图形表示,以供新评论使用。如果有新的未读评论,它应该在一个随机区域中显示为图形。但如果全部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;                    
        }

0 个答案:

没有答案