我试图随机显示集合的内容(4项)。我完美地工作,除了前3项显示但数组中的最后2项没有,我总是得到一个空白的回声。为什么会这样?
$sql = "SELECT test FROM sandbox";
$collections = [];
if ($result = mysqli_query($connection, $sql)) {
while($row = mysqli_fetch_row($result)){
$collections[] = $row;
}
echo json_encode(array('test'=>$collections[rand(0, count($collections))]));
}
修改:
答案 0 :(得分:1)
您的数据库连接很可能不使用UTF-8。这就是json_encode
失败的原因 - 它只适用于UTF-8编码的字符。
尝试发出
SET NAMES utf8
在查询你的桌子之前。或者在使用mysqli_set_charset($connection, 'utf8')
扩展程序时使用mysqli
。
正如其他人已经指出的那样,它应该是
count($collections) - 1
因为rand()
将最低值和最高值作为其函数参数返回。但count($collections)
不是长度为count($collections)
的数组的有效索引。
答案 1 :(得分:-1)
我猜您的问题在于您的代码,
rand(0, count($collections))])
如果您在rand()
和array length
范围内运行array length
,例如0和4,则表示您不会将rand()
结果作为2, 2,3,4表示你随机选择多次选择一个键。