3

フィールド (message_type & パーセンテージ) に戻るテーブルをクエリしています。PHPを使用してjsonデータをエンコードします。これが方法です

$json = array();
while ($row = odbc_fetch_array($rs)) {
  $json[][] = $row;
}
echo json_encode($json);

出力:

[ [ { "message_type" : "bullying",
      "percentage" : "60"
    } ],
  [ { "message_type" : "cheating",
      "percentage" : " 14"
    } ],
  [ { "message_type" : "Stress",
      "percentage" : "16"
    } ],
  [ { "message_type" : "Gang",
      "percentage" : "7"
    } ]
]

ご覧のとおり、json_encode 関数は中括弧、引用符、およびオブジェクト キー名を追加しています。

私が望むのは、jsonを2次元配列のみとして解析することです。ここに目的の出力があります:

[
  ["bullying", 60],
  ["harrassment", 9],
  ["cheating", 14],
  ["Stress", 16],
  ["Gang", 7]
]

また、手動でエンコードしようとしましたが、必要な結果を得ることができませんでした。

4

1 に答える 1

8

PHPjson_encode()は特定のベクトルが JSON オブジェクトとしてエンコードされているか配列としてエンコードされているかを判断するためにある程度の魔法を使用しますが、単純なルールは次のとおりです。 . その他のベクトル (オブジェクトまたは連想配列) は、オブジェクトとしてエンコードされます。

を使用しているためodbc_fetch_array()、結果行はキーが列名である連想配列として返されます。必要な結果を得るには、次の 3 つのオプションがあります。

結果行を に渡しますarray_values()

$json[] = array_values($row);

個々の配列を手動で構築します。

$json[] = array($row['message_type'], $row['percentage']);

または、おそらく最良のオプションは、odbc_fetch_row()代わりに使用することです。これにより、インデックス付き配列がすぐに返されます。

while ($row = odbc_fetch_row($rs)) {
    $json[] = $row;
}
于 2013-04-09T23:38:23.990 に答える