来自数据库的数组显示字段名而不是值


Array from database is showing field name and not value

我有一个数据库表,其中每个记录有许多可能的"答案"。我想提取其中一条记录,并从该记录中显示一个随机值。所有这些都工作得很好,但是,它显示的是字段的名称,而不是字段中的值。

我是这样得到记录的:

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"。这是随机选择的字段的字段名。为什么它没有显示值?

结果是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。显然,这使得引号在键/值周围显示,而不使用它显示没有引号的键/值。不知道有什么用