Php 将JSON对象格式化为JSON对象数组
我搜索谷歌已经有一段时间了,但还没有接近我要找的东西 从服务器上的REST API中,我得到以下响应:Php 将JSON对象格式化为JSON对象数组,php,arrays,json,slim,Php,Arrays,Json,Slim,我搜索谷歌已经有一段时间了,但还没有接近我要找的东西 从服务器上的REST API中,我得到以下响应: {“小时”:6,“天”:“星期五”{“小时”:3,“天”:“星期三”{“小时”:6,“天”:“星期一”{“小时”:9,“天”:“星期四”{“小时”:12,“天”:“星期二”{“小时”:3,“天”:“星期五” 这只是JSON对象的一个长字符串。如何让这些对象在PHP中以JSON对象数组的形式返回 [ {“小时”:6,“天”:“星期五”}, {“小时”:3,“天”:“星期三”}, {“小时”:6,
{“小时”:6,“天”:“星期五”{“小时”:3,“天”:“星期三”{“小时”:6,“天”:“星期一”{“小时”:9,“天”:“星期四”{“小时”:12,“天”:“星期二”{“小时”:3,“天”:“星期五”
这只是JSON对象的一个长字符串。如何让这些对象在PHP中以JSON对象数组的形式返回
[
{“小时”:6,“天”:“星期五”},
{“小时”:3,“天”:“星期三”},
{“小时”:6,“日”:“周一”},
{“小时”:9,“天”:“星期四”},
{“小时”:12,“天”:“星期二”},
{“小时”:3,“天”:“星期五”}
]
我正在使用Slim框架,主要用于处理路由调用
我的PHP如下所示:
function getHoursbyId($id) {
$app = \Slim\Slim::getInstance();
$query = 'SELECT hours, day FROM prof_hours
JOIN professors ON professors.id=prof_hours.prof_id
WHERE professors.id=?;';
$stmt = $this->connection->prepare($query);
$stmt->bind_param("i", $id);
if($stmt->execute()) {
$stmt->bind_result($hours, $day);
while ($stmt->fetch()) {
$result['hours'] = $hours;
$result['day'] = $day;
echo jsonResponse('200', $result);
}
$stmt->close();
return $result;
} else {
return NULL;
}
}
$result
是一个数组,被传递到函数jsonResponse()
我假设jsonResponse中的某个地方存在我的问题,但我将如何解决这个问题?如何修复PHP脚本: 现在,您将分别打印每个项目 相反,构建一个数组,并在最后使用
json\u encode()
对其进行响应
然后您将得到有效的JSON响应。看起来您正在为每一行回显jsonResponse。因此,当前对于从数据库中获得的每一行,您都要求应用程序回显其
json\u encode
'd值。这就是为什么会得到一个json对象的非分隔字符串
您需要做的是将所有行构建到一个数组中,然后将其发送到输出函数
尝试:
function jsonResponse($httpStatus, $response) {
$app = \Slim\Slim::getInstance();
$app->status($httpStatus);
$app->contentType('application/json');
echo json_encode($response);
}
$items = array();
// adding (in the loop)
$items[] = array('hours'=>$hours, 'day'=>$day);
// at the end
echo json_encode($items);
...
$results = array();
while ($stmt->fetch()) {
$results[] = array(
'hours' => $hours,
'day' => $day
);
}
echo jsonResponse('200', $results);
...