2012-12-31 2 views
0

Je travaille dans yii. Je fonction de contrôleur AS-Comment obtenir la sortie json dans le format requis

public function actiongetPublicQuestion() 
{ 
    $model=new Qbquestion(); 
    $new = Yii::app()->db->createCommand()->select('max(tranId)')->from('qbpublicuserquestion')->queryScalar(); 
    $CurrentQuestionId=Qbpublicuserquestion::model()->findByPk($new); 
    $currentQuestion=Qbquestion::model()->findByPk($CurrentQuestionId->questionId); 
    echo "Currently displayed question is=".$currentQuestion->question."</Br>"; 
// $answer=Qbquestionoption::model()->findAllByAttributes(array('questionId'=>$currentQuestion1->questionId)); 



    $old = Yii::app()->db->createCommand()->select('max(tranId-1)')->from('qbpublicuserquestion')->queryScalar(); 
    $PreviousQuestionId=Qbpublicuserquestion::model()->findByPk($old); 
    $currentQuestion1=Qbquestion::model()->findByPk($PreviousQuestionId->questionId); 
    echo "previously displayed question is=".$currentQuestion1->question; 
    $answer=Qbquestionoption::model()->findAllByAttributes(array('questionId'=>$currentQuestion1->questionId)); 

    foreach($answer as $ans) 
    { 
    // var_dump($ans); 

     if($ans->isAnswer==1) 
     { 
      echo "</br>"."correct Answer is=".$ans->option."with optionId=".$ans->optionId; 
      $true=$ans->option; 
      echo "</br>"; 
      echo "{'questions':[".CJSON::encode(array("question"=>$currentQuestion1->question,"answer"=>$true,"question1"=>$currentQuestion->question))."] }"; 
     } 
    } 
} 

donc je suis retriving deux questions de base de données de telle sorte que la dernière entrée de la table est question actuellement affichée et la deuxième entrée dernière est question affichée previouly. Je veux publier la réponse de la question précédemment affichée aussi. J'envoie cette information au format codé json. je veux sortie en format =

"Questions": [ 
    {"question": "Who is the prime minister of india?","answer":"Manmohan sinh"}, 
    {"question": "2 when who will win the test?"}, 
] 

Mais quand je me sers même variable dans cjson :: encode (array ("question" => $ currentQuestion1-> question, "réponse" => $ true, "question "=> $ currentQuestion-> question))."]} ";}, ce qui ne donne qu'une seule réponse si nous utilisons la même variable dans un tableau cjson encodé. Alors, comment obtenir la sortie requise.

Répondre

3

Comme la sortie que vous voulez a deux objets JSON (à savoir deux éléments entre accolades), la structure de données on passe à cjson :: encode doit être un tableau d'objets ou de tableaux, i.e. .:

CJSON::encode(array(array("question"=>$currentQuestion1->question,"answer"=>$true), 
        array("question"=>$currentQuestion->question), 
        ) 
      ); 
Questions connexes