【问题标题】:Array_Rand always returns same value PHP fetch arrayArray_Rand 总是返回相同的值 PHP 获取数组
【发布时间】:2013-05-06 10:35:37
【问题描述】:

我有这个功能:

function set_spell() {
global $connection;
$query = "SELECT * FROM Spells";
$result_set = mysqli_query($connection, $query);
$spell_id_list = mysqli_fetch_array($result_set);
return $spell_id_list;

然后我尝试从数组中输出一个随机 ID,但我总是得到 ID 1。

$spell_id_list = set_spell();
echo $spell_id_list[array_rand($spell_id_list)];

当我在 MYSQL 中运行此查询时,我得到了所有 ID 的列表,如预期的那样。为什么上面的代码没有随机选择一个?

这可能是一个愚蠢的问题,看到答案后我会打自己一巴掌……但我被困的时间比我认为的要长。

感谢您的帮助。

【问题讨论】:

  • 你想达到什么目的?随机结果数组还是只有一个随机值?
  • 不要使用global,而是将connection作为参数传递
  • 已经有一段时间了,但 *_fetch_row 不是只得到一个结果吗?那么 $spell_id_list 不是只有在 set_spell 返回的时候才有 on item 吗?
  • 试图从数组中获取一个随机 ID。 @先生。外星人我该怎么做而不是使用全局?是的,fetch_row 上的错字,我测试了 fetch_array 和同样的问题。

标签: php mysql arrays random


【解决方案1】:

您只从函数中返回单个结果,因此要么创建所有获取结果的数组并返回相同的结果,要么在查询中使用rand() 的顺序,

SELECT * FROM Spells ORDER BY RAND();

【讨论】:

  • 是的,最初在 MYSQL 语句中使用 ORDER BY RAND(),但听说这不是完全随机或好的做法。如何创建具有所有获取结果的数组而不是一个?正如我在上面的评论中所说,我使用了 msqli_fetch_array 并且仍然得到相同的结果?
  • 只需循环 mysqli_fetch_array 并构建一个结果数组。
猜你喜欢
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2019-10-22
  • 2019-10-31
  • 1970-01-01
相关资源
最近更新 更多