2010-08-17 50 views
8

我正在使用JSON編碼數組來顯示用戶在我的數據庫中的自動建議功能。向JSON編碼數組添加其他對象

它看起來是這樣的:

$sth = mysql_query("SELECT id, name FROM users"); 

$json = array(); 

    while($row = mysql_fetch_assoc($sth)) { 
     $json['name'] = $row['name']; 
     $json['id'] = $row['id']; 
     $data[] = $json; 
    } 

print json_encode($data); 

這將返回:

[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}] 

我的問題是有點2倍:

首先,我將如何手動添加一個額外的反對這個輸出?例如,假設我想補充:{"id":"444","name":"A New Name"}

因此,它會看起來像:

[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}] 

,比方說,我也希望更多的物體從一個單獨的表添加到陣列還有,如:

$sth = mysql_query("SELECT id, title FROM another_table"); 

$json = array(); 

    while($row = mysql_fetch_assoc($sth)) { 
     $json['name'] = $row['title']; 
     $json['id'] = $row['id']; 
     $data[] = $json; 
    } 

print json_encode($data); 

這樣我可以有填充JSON數組中的兩個表,因此,顯示在我的自動提示作爲附加選項。

希望這是有道理的,因爲我努力表達我正在努力完成的事情。

謝謝!

+1

爲什麼不將它們添加到您的數組你做json_encode之前?這對我來說會更有意義。 – wimvds 2010-08-17 15:46:23

回答

13

只要繼續推向$data陣列。

$json = array(); 

    while($row = mysql_fetch_assoc($sth)) { 
     $json['name'] = $row['name']; 
     $json['id'] = $row['id']; 
     $data[] = $json; 
    } 

$custom = array('name'=>'foo', 'id' => 'bar'); 
$data[] = $custom; 

然後在最後,做你的json_encode。假設你並沒有將JS本身與多個Ajax調用進行合併。

如果您有單獨的腳本,請將它們合併到一個php頁面中。

+1

謝謝Meder。比我想象的要容易得多。 – Dodinas 2010-08-17 17:04:54

1

您可以編輯JSON(文本),但在編碼之前修改數組要容易得多。 或者我錯過了什麼?

0

我不是這些領域的專家,但我會嘗試看看我能否提供幫助。嘗試下列操作之一:

選項1(我不知道工會在mysql中是如何工作的):

$sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); 


    $json = array(); 

     while($row = mysql_fetch_assoc($sth)) { 
      $json['name'] = $row['name']; 
      $json['id'] = $row['id']; 
     } 

    $json['name'] = 'A new name'; 
    $json['id'] = '444'; 
    $data[] = $json; 

    print json_encode($data); 

我從來沒有做過PHP,所以我做的假設。我也從來沒有使用MySql,所以有更多的假設。

選項2:

$sth = mysql_query("SELECT id, name FROM users"); 


    $json = array(); 

     while($row = mysql_fetch_assoc($sth)) { 
      $json['name'] = $row['name']; 
      $json['id'] = $row['id']; 
     } 

$sth = mysql_query("SELECT id, title from another_table"); 


     while($row = mysql_fetch_assoc($sth)) { 
      $json['name'] = $row['title']; 
      $json['id'] = $row['id']; 
     } 

    $json['name'] = 'A new name'; 
    $json['id'] = '444'; 
    $data[] = $json; 

    print json_encode($data); 

希望這有助於。

4

嘗試這種方式: -

$temp = json_encode($json); //$json={"var1":"value1","var2":"value2"} 
$temp=substr($temp,0,-1); 
$temp.=',"variable":"'.$value.'"}';