我有一个数据库表,其中每个记录都有许多可能的“答案”。我想拉出其中一条记录,并显示该记录中的随机值。所有这一切都运行正常,但是,它显示的是字段的名称,而不是该字段中的值。
以下是我获取记录的方式:
if (isset($_GET['choice'])) {
$colname_getBeginning = $_GET['choice'];
}
$json = array();
mysql_select_db($database_localhost, $localhost);
$query_getSentence = sprintf("SELECT * FROM answers WHERE ID = %s", GetSQLValueString($colname_getBeginning, "int"));
$getSentence = mysql_query($query_getSentence, $localhost) or die(mysql_error());
while ( $row_getSentence = mysql_fetch_assoc($getSentence)) {
$json[] = $row_getSentence;
}
然后,结果,我这样做:
$new_array = array_slice($json[0],1,9);
$random_key = array_rand($new_array);
$answer1 = json_encode($random_key);
echo $row_getBeginning['question'] . $answer1;
它应该显示如下:我最喜欢的动物是“鸡”。相反它说,我最喜欢的动物是“ANS4”。这是随机选择的字段的字段名称。为什么不显示价值?
答案 0 :(得分:0)
结果是array_rand返回"键"一个数组而不是值。因此,将我的最后一段代码改为此修复了问题:
new_array = array_slice($json[0],1,9);
$random_key = array_rand(array_flip($new_array));
$answer1 = $random_key;
echo $row_getBeginning['question'] . $answer1;
注意第二行中的array_flip。这会翻转数组,使键成为值或值成为键。另外,我拿出了encode_json。显然,让它在键/值周围显示引号而不使用它会显示没有引号的键/值。不知道有什么目的。