2017-08-02 71 views
1

我需要的形式是:创建某些JSON形式

{ 
    "suggestions": [ 
     { "value": "United Arab Emirates", "data": "AE" }, 
     { "value": "United Kingdom",  "data": "UK" }, 
     { "value": "United States",  "data": "US" } 
    ] 
} 

我得到了这个PHP代码:

header("Content-type: application/json"); 
require 'connect.inc.php'; 
$mysql = mysqli_connect("$db_host", "$db_username", "$db_pass", "$db_name"); 
$name = isset($_POST['query']) ? $_POST['query'] : ""; 


$sql = "SELECT MedicineName, MedicineID FROM medicinetypes WHERE MedicineName LIKE '%$name%'"; 

$res = mysqli_query($mysql, $sql); 
$res = mysqli_fetch_all($res, MYSQLI_ASSOC); 
$reply = array(); 
$reply['suggestions'][]=$res; 
echo json_encode($reply); 
mysqli_close($mysql); 

是这样的:

{"suggestions":[[{"MedicineName":"Amoxil 500","MedicineID":"1"},{"MedicineName":"Panadol","MedicineID":"2"},{"MedicineName":"Farmako3","MedicineID":"3"},{"MedicineName":"Beer","MedicineID":"4"},{"MedicineName":"Farmako4","MedicineID":"5"},{"MedicineName":"hjkki","MedicineID":"61"},{"MedicineName":"Amoxil 1","MedicineID":"577"},{"MedicineName":"Amoxil 502","MedicineID":"580"},{"MedicineName":"Amoxil 56","MedicineID":"582"},{"MedicineName":"Amoxil 600","MedicineID":"583"},{"MedicineName":"\u03b5\u03bb\u03b1 \u03bc\u03bf\u03c5 \u03bd\u03c4\u03b5","MedicineID":"586"}]]} 

由于它不符合我需要的格式,因此导致了一个问题。我怎样才能正确地做到这一点?

+0

下面是其他用户发布的解决方案: https://stackoverflow.com/questions/15678355/remove-extra-square-bracket-from-json – guillefix

+0

@guillefix - 这是为了解决JSON解析时的问题(假设它在JS中被解析)。问题在于询问如何在源头修复数据。 – Quentin

+0

'MedicineName!==值'和'MedicineID!==数据' –

回答

6

此:

$reply['suggestions'][]=$res; 
  1. 获取$reply['suggestions']
  2. 分配一个空数组,如果它一个不存在有
  3. 提出$res(已经阵列)作为该阵列中的下一项

您只需要将$res设置为$reply['suggestions']的值即可。

删除[]

$reply['suggestions']=$res; 
+0

啊我真是太蠢!谢谢 – Constantine

2

尝试改变$reply['suggestions'][]=$res;$reply['suggestions']=$res;