在 MySQL 中随机显示一列数据
Display one-column data randomly in MySQL
我有一个 table 有很多记录。通过拖放输入中的文本,用户可以确定哪个文本适用于哪个输入或图像。
通常所有的衰退都是按顺序显示的,并且很清楚哪个答案对应哪个图像。
我希望列响应数据随机放置在每个图像的前面。
注意,我不是希望每一行都随机显示,而是希望某一列的数据随机显示。
id
answer
image
1
test1
test1.jpg
2
test2
test2.jpg
我想让Test1 Title显示在test2图片前面,Test2 Title显示在test1图片前面。
我使用了下面的代码但是没有改变:
$gg1 = "SELECT * FROM groupanswer WHERE id='$nowid' ";
$gg2=mysqli_query($conn,$gg1);
while($gg3=mysqli_fetch_assoc($gg2)){
$iii=$gg3['answer'];
$aa = array($iii);
$key = array_rand($aa);
}
我附上照片:
您可以简单地使用两个数组。一个将 id 作为索引,并将 answer 作为值。该数组将保持原始顺序。另一个数组也将 id 作为索引,但 image 作为值。它将被随机重新排序。
$answers = [];
$images = [];
$query = "SELECT * FROM groupanswer WHERE id='" . (int) $nowid . "'";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
$answers[$row['id']] = $row['answer'];
$images[$row['id']] = $row['image'];
}
$randomOrder = array_keys
$images = shuffle_assoc($images); //Randomize order
//Demo echoing
foreach ($answers as $id => $answer) {
echo $answer . ' - ' . $images[$id] . '<br />';
}
//Function to shuffle preserving indexes
function shuffle_assoc($list) {
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}
我有一个 table 有很多记录。通过拖放输入中的文本,用户可以确定哪个文本适用于哪个输入或图像。
通常所有的衰退都是按顺序显示的,并且很清楚哪个答案对应哪个图像。 我希望列响应数据随机放置在每个图像的前面。
注意,我不是希望每一行都随机显示,而是希望某一列的数据随机显示。
id | answer | image |
---|---|---|
1 | test1 | test1.jpg |
2 | test2 | test2.jpg |
我想让Test1 Title显示在test2图片前面,Test2 Title显示在test1图片前面。
我使用了下面的代码但是没有改变:
$gg1 = "SELECT * FROM groupanswer WHERE id='$nowid' ";
$gg2=mysqli_query($conn,$gg1);
while($gg3=mysqli_fetch_assoc($gg2)){
$iii=$gg3['answer'];
$aa = array($iii);
$key = array_rand($aa);
}
我附上照片:
您可以简单地使用两个数组。一个将 id 作为索引,并将 answer 作为值。该数组将保持原始顺序。另一个数组也将 id 作为索引,但 image 作为值。它将被随机重新排序。
$answers = [];
$images = [];
$query = "SELECT * FROM groupanswer WHERE id='" . (int) $nowid . "'";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
$answers[$row['id']] = $row['answer'];
$images[$row['id']] = $row['image'];
}
$randomOrder = array_keys
$images = shuffle_assoc($images); //Randomize order
//Demo echoing
foreach ($answers as $id => $answer) {
echo $answer . ' - ' . $images[$id] . '<br />';
}
//Function to shuffle preserving indexes
function shuffle_assoc($list) {
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}