2012-01-06 15 views
1

JSONを使いこなすのは初めてです。エンコード前にJSONデータに名前/タグを追加する方法

私の現在のスクリプトには、以下のJSONを出力します - 私は、例えば、データの個々の部分に名前/タグを追加したいと思いますしかし

{"comments":[[17.9775280899,"2011-09-28 14:38:41","admin","1","2","http:\/\/www.example.com\/members\/admin\/","http:\/\/www.example.com\/wp-content\/uploads\/avatars\/1\/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"], 
[0.749063670412,"2011-09-28 14:43:11","admin","1","3","http:\/\/www.example.com\/members\/admin\/","http:\/\/www.example.com\/wp-content\/uploads\/avatars\/1\/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"], 
[36.329588015,"2011-10-06 14:15:12","admin","1","10","http:\/\/www.example.com\/members\/admin\/","http:\/\/www.example.com\/wp-content\/uploads\/avatars\/1\/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"]]} 

'leftPercent'、 'タイムスタンプ'、 'ユーザ名' など

これが私のスクリプトの関連する部分である:

まず私は、データベースからデータを取得...

$sQuery = " 
    select cp_comments.*,users.user_login, users.user_url, users.display_name, users.ID as avatar 

    from ".$wpdb->prefix."cp_comments cp_comments 
     left join ".$wpdb->prefix."users users on users.ID=cp_comments.uid 
     where songid='$id' 
     order by cp_comments.id asc 
"; 
$rResult = mysql_query($sQuery, $gaSql['link']) or die(mysql_error()); 

次にIデータに対してカスタムの書式設定を行います。 。(

$output = array(  
    "comments" => array() 
); 


while ($aRow = mysql_fetch_array($rResult)) 
{ 
    $row = array(); 
    for ($i=0 ; $i<count($aColumns) ; $i++) 
    {   
     if ($aColumns[$i] == "playtime") 
     { 
      /* Special output formatting for 'playtime' column */ 
      $row[] = ($aRow[ $aColumns[$i] ])/$duration * 100; 
     } 
     else if ($aColumns[$i] == "avatar") 
     { 
      /* Special output to render Avatar by user id */ 
      $row[] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]); 
     } 
     else if ($aColumns[$i] != ' ') 
     { 
      /* General output */ 
      $row[] = $aRow[ $aColumns[$i] ]; 
     } 
    } 

    $output['comments'][] = $row; 
} 

今それだけのコメントであるため、後に添加されるその他の項目、がありますそして最後に、私はJSONをエンコード:?

echo json_encode($output); 

私はどの部分が欠落しています私は、これは非常にあると確信しています$aColumns[$i]は、データベースクエリから名前の欄に該当する場合は、すべての。

+1

数値の代わりに連想配列を作成し、 "タグ/名前"をキーとして設定します。 –

+0

私はこれをどうやって行うのかよく分かりません。しかし、提案をありがとう – gordyr

+0

それをエンコードする前にデータを変更してください。 –

答えて

4

シンプルな。おかげで、この

$output = array(

    "comments" => array() 
); 


while ($aRow = mysql_fetch_array($rResult)) 
{ 

    $row = array(); 
    for ($i=0 ; $i<count($aColumns) ; $i++) 
    { 

     if ($aColumns[$i] == "playtime") 
     { 
      /* Special output formatting for 'playtime' column */ 
      $row[$aColumns[$i]] = ($aRow[ $aColumns[$i] ])/$duration * 100; 
     } 


     else if ($aColumns[$i] == "avatar") 
     { 
      /* Special output to render Avatar by user id */ 
      $row[$aColumns[$i]] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]); 
     } 
     else if ($aColumns[$i] != ' ') 
     { 
      /* General output */ 
      $row[$aColumns[$i]] = $aRow[ $aColumns[$i] ]; 
     } 
    } 


    $output['comments'][] = $row; 



} 
を試してみてください

変更されました$row[]$row[$aColumns[$i]]

+0

* sigh * - とてもシンプルです。多くのおかげで、完璧な答え。 – gordyr

関連する問題