-1

私はこのようなものを持っています:

public function options()
      {
         $out = '';
         $docs = $this->getAll();;
         foreach($docs as $key => $doc) {
             $out .= ',{"label" : "' . $doc['name'] . '", "value" : "' . $doc['id'] .'"}';
         }
         return $out;
      }

DB からのオプションのリストが表示されますが、上部に null 値も表示されます。

次のように書くと:

public function options()
     {
         //$out = '';
         $docs = $this->getAll();;
         foreach($docs as $key => $doc) {
             $out = '';
             $out .= '{"label" : "' . $doc['name'] . '", "value" : "' . $doc['id'] .'"}';
         }
         return $out;
     }

null 値は返されませんが、1 つの値しか返されません。

$out .= ',{"label" : "' . $doc['name'] . '", "value" : "' . $doc['id'] .'"}'; 

この行に を追加しない,と、エラー メッセージが表示されます。これ$out = '';は、一番上にあるためです。それでは、最初に空の値なしで DB からすべての値を取得する方法を教えてください。

;;このコードで (ダブル セミコロン)を使用する理由について、別の質問もあります。

 $docs = $this->getAll();;
4

3 に答える 3

1

$out をテストして長さがあるかどうかを確認します。長さがある場合はカンマと行を追加し、そうでない場合は行に設定します。

$out="";
foreach($docs as $key=>$doc){
    if(strlen($out)){
        $out.=',{"label" : "' . $doc['name'] . '", "value" : "' . $doc['id'] .'"}';
    }else{
        $out='{"label" : "' . $doc['name'] . '", "value" : "' . $doc['id'] .'"}';
    }
}

もう 1 つの質問ですが、あなたがコードを書いたのに、なぜセミコロンを 2 つ入れたのですか?

于 2013-10-14T10:04:54.963 に答える
0

これは、JSON を構築する正しい方法ではありません。最初に配列を作成し、それを使用json_encode()します。

于 2013-10-14T09:59:53.683 に答える