2014-09-04 51 views
0

我的PHP代碼生成非有效的JSON輸出誤差輸出誤差

我的PHP代碼:

$questions = array(); 
while($question = mysql_fetch_array($result, MYSQL_ASSOC)) { 
$questions[] = array('question'=> $question); 
} 
print_r ($questions); 

$newQuestions = array('questions' => array()); 

foreach($questions as $key => $question){ 
    $newQuestion = array(
      'question' => $question['question']['question'], 
      'correct' => $question['question']['correct'], 
      'answers' => array(
        $question['question']['answer1'], 
        $question['question']['answer2'], 
        $question['question']['answer3'], 
        $question['question']['answer4'] 
       ) 
    ); 

    $newQuestions['questions'][] = $newQuestion; 

} 

$output = json_encode(($newQuestions),JSON_UNESCAPED_UNICODE); 

echo '<br/><br/>'; 
echo $output; 

表字段:

Question : 
correct : 
answer 1 : 
answer 2 : 
answer 3 : 
answer 4 : 

實施例:

Question : is php a good language ? 
correct : 1 
answer 1 : yes 
answer 2 : no 
answer 3 : maybe 
answer 4 : good 

輸出正常,並格式化爲a我想要。

輸出樣本:http://pastebin.com/eefS7KYW

我相信我的PHP代碼是正確的,但我不知道哪裏是完全的問題!

============== 修正:它只是兩個echo $輸出!

+1

'。該問題必須在您的代碼中,但我無法看到手繪屏幕截圖中的具體內容。這似乎是你輸出結果兩次。 – 2014-09-04 23:17:12

+0

看起來像缺少一個逗號 – RicardoE 2014-09-04 23:20:21

+0

@RicardoE作爲'問題'是根對象中唯一的關鍵,它更可能是雙重打印,否則它不會出現在'異常'行之後。 – 2014-09-04 23:27:19

回答

1

好像你在做很多變量傳遞,很快就會變得非常混亂。特別是當所有變量都是「問題」的迭代時。看起來你是從格式爲[questions [question,correct,answers [1,2,3,4]]]的格式的數據庫中創建一個數組,這種代碼格式可能會更好?

$newQuestions = array(); 
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $newQuestions['questions'][] = array(
    'question' => $row['question'], 
    'correct' => $row['correct'], 
    'answers' => array(
     $row['answer1'], 
     $row['answer2'], 
     $row['answer3'], 
     $row['answer4'] 
     ) 
    ); 
} 

    $output = json_encode(($newQuestions),JSON_UNESCAPED_UNICODE); 

    echo '<br/><br/>'; 
    echo $output; 

曾在錯誤的分號place.Fixed上面的代碼並測試用下面的代碼:json_encode`工作正常

<?php 

$array = array(
    array('question'=>'Question1', 
     'correct'=>3, 
     'answer1' => 'Q1Answer1', 
     'answer2' => 'Q1Answer2', 
     'answer3' => 'Q1Answer3', 
     'answer4' => 'Q1Answer4' 
    ), 
    array('question'=>'Question2', 
     'correct'=>3, 
     'answer1' => 'Q2Answer1', 
     'answer2' => 'Q2Answer2', 
     'answer3' => 'Q2Answer3', 
     'answer4' => 'Q1Answer4' 
    ), 
    array('question'=>'Question3', 
     'correct'=>3, 
     'answer1' => 'Q3Answer1', 
     'answer2' => 'Q3Answer2', 
     'answer3' => 'Q3Answer3', 
     'answer4' => 'Q1Answer4' 
    ) 
); 

$newQuestions = array(); 
//while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
foreach($array as $row){ 
    $newQuestions['questions'][] = array(
    'question' => $row['question'], 
    'correct' => $row['correct'], 
    'answers' => array(
     $row['answer1'], 
     $row['answer2'], 
     $row['answer3'], 
     $row['answer4'] 
     ) 
    ); 
} 

print_r($newQuestions); 
$output = json_encode(($newQuestions),JSON_UNESCAPED_UNICODE); 

echo '<br/><br/>'; 
echo $output; 

?> 
+0

不工作!它返回一個空數組! – saad 2014-09-05 00:09:39

+0

在錯誤的地方有分號。經過測試和修復。 – nwolybug 2014-09-05 03:18:20

+0

它的工作原理!謝謝 !它只是打印2輸出的兩次回聲:D – saad 2014-09-05 12:35:42