2014-05-10 3 views
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"라고합니다. 그것이 무작위로 선택된 필드의 필드 이름입니다. 왜 그 가치를 보여주지 않는가?

답변

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을 제거했습니다. 분명히, 그 키/값 주위에 표시되는 따옴표가 필요하고 그것을 사용하지 않는 따옴표없이 키/값을 보여줍니다. 그 목적이 무엇인지 모릅니다.

관련 문제