各レコードに多くの可能な「回答」があるデータベーステーブルがあります。それらのレコードの1つをプルして、そのレコードからランダムな値を表示したいと思います。これはすべて正常に機能していますが、フィールドの値ではなくフィールドの名前が表示されています。
これが私がレコードを取得する方法です:
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;
2行目のarray_flipに注目してください。これにより配列が反転し、キーが値になるか、値がキーになります。また、encode_jsonを取り出しました。どうやら、それがあるとキー/値の周りに引用符が表示され、それを使用しないと引用符なしのキー/値が表示されます。それがどんな目的を持っているのかわからない。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加