2017-08-02 18 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

$reply['suggestions'][]=$res;を変更してみてください: https://stackoverflow.com/questions/15678355/remove-extra-square-bracket-from-json – guillefix

+0

@guillefixは、これは、JSONが解析されるときに問題を回避するためです(JSで解析されていると仮定します)。問題は、データをソースで修正することです。 – Quentin

+0

'MedicineName!== value'と' MedicineID!== data' –

答えて

6

これ:

$reply['suggestions'][]=$res; 
  1. $reply['suggestions']
  2. を取得し、それが既に
  3. として$res(既にアレイ)そこに置きますが存在しない場合に空の配列を割り当てその配列の次の項目

$res$reply['suggestions']という値にしてください。

[]を削除します。

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

ああ私はとても愚かでした!ありがとうございました – Constantine

2

ここで、他のユーザーが投稿ソリューションです$reply['suggestions']=$res;

関連する問題