Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取正确的json响应_Php_Json - Fatal编程技术网

Php 获取正确的json响应

Php 获取正确的json响应,php,json,Php,Json,我从数据库中获取数据,并以json的形式显示它 我是这样做的: while ($row = @mysqli_fetch_row($result)) { array_push($result1,$row); } echo $result1 = json_encode($result1,true); 以这种形式给出结果 [["29"],["13702210"],["892344"],["Multi AxleB9RVolvo"],["10:3

我从数据库中获取数据,并以json的形式显示它

我是这样做的:

    while ($row = @mysqli_fetch_row($result))
    {   
        array_push($result1,$row);
    }
    echo  $result1 = json_encode($result1,true); 
以这种形式给出结果

[["29"],["13702210"],["892344"],["Multi AxleB9RVolvo"],["10:30AM"],["06:45PM"],["14"],["37"],["650"]] 
这只打印从表中获取的数据库值。但此响应被标记为无效json响应

每个字段在表中都有名称。 我希望看到json响应的这种形式:

{"routes":[{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}},{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}},{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}}]}

它包含名称和嵌套预览。我怎样才能做到这一点?

你需要使用关联数组,使用这个

while ($row = @mysqli_fetch_assoc($result))
{   
    array_push($result1,$row);
}
echo  $result1 = json_encode($result1,true); 
// for `routes` parent
// echo  $result1 = json_encode(array("routes" => $result1));

我不知道你数据库的结构,但是:

while ($row = @mysqli_fetch_assoc($result))
{   
    array_push($result1,$row);
}
echo  $result1 = json_encode(array('routes' => $result1)); 
可能会给你想要的结果
mysql\u fetch\u assoc()
将表行作为关联数组返回,关联数组将提供键

然后
array('routes'=>$result1)
创建一个新的关联数组,其中键“routes”与数组索引匹配

如果sql响应中的键不正确,您可以尝试在sql查询中使用
选择字段名称作为别名\u名称
,以返回适当的字段名称


这里真正的技巧是为每个值设置具有适当键的关联数组,以便
json\u encode
创建对象而不是列表

很可能您将
json\u encode
json\u decode
混淆了
json_encode
期望第二个参数为
int
(位屏蔽选项)。@最后感谢您的警告,我还没有看到。重构您需要使用
mysqli\u fetch\u assoc
来返回键值数组。看到我的答案了吗