PHP:生成一个没有{}的json?

时间:2016-06-11 11:22:21

标签: php mysql json

我需要使用来自MYSQL数据库的php生成这样的php json:

[['Staff Welfare', 'london', 'map-marker-icon.png'] , ['perfect', 'London', 'map-marker-icon.png'] , ['Fare Trade', 'essex', 'map-marker-icon.png'] , ['Fare Trade', 'london', 'map-marker-icon.png'] ,]

这是我尝试过的:

$return_arr = array();
$sql = "SELECT * FROM restaurants";
if ($result = mysqli_query($db_conx, $sql )){
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

    $row_array['id'] = $row['id'];
    $row_array['location'] = $row['location'];
    $row_array['name'] = $row['name'];
    $row_array['type'] = $row['type'];


    array_push($return_arr,array($row_array));
   }
 }

mysqli_close($db_conx);

echo json_encode($return_arr);

但上面的代码回应如下:

[[{"id":"1","location":"london","name":"Staff","type":"indian"}], [{"id":"2","location":"London","name":"perfect","type":"chinese"}],[{"id":"3","location":"essex","name":"Trade","type":"kebab"}],[{"id":"5","location":"london","name":"Fare Trade","type":"kebab"}]]

有人可以告诉我如何删除{}并删除column names,以便我的json回声与我想要的一样吗?

2 个答案:

答案 0 :(得分:3)

你必须摆脱数组键才能生成没有{}的json。将array_push代码更改为:

array_push($return_arr, array_values($row));

array_values函数只会返回$row值,而不会显示任何键。

答案 1 :(得分:2)

您引用的所需JSON无效,但如果您将'更改为"并删除了最终,,那么它将有效:

[
    ["Staff Welfare", "london", "map-marker-icon.png"],
    ["perfect", "London", "map-marker-icon.png"],
    ["Fare Trade", "essex", "map-marker-icon.png"],
    ["Fare Trade", "london", "map-marker-icon.png"]
]

这是一个包含数组的数组,每个数组包含三个条目,所有这些都是字符串。

如果您不想在JSON中使用对象,请不要将关联数组推送到PHP中的结果数组中。

您的while循环应为:

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    array_push($result_arr, array(
        $row['name'],
        $row['location'],
        $row['some-field-you-have-not-shown-giving-image-link']
    ));
}

请注意,推送的是一个带有三个条目的无聊非关联数组。 (另请注意,您还没有显示哪个列名称给出了图片链接,因此我上面使用了描述性的一个。)