php - 如何在php中生成格式正确的json?
问题描述
我试图用我的数据库的数据生成一个 json,所以当我收到数据时一切正常,当我将数据放入 JSON 格式时就会出现问题,看起来这是错误的:
{"comment":[{"id_comment":1,"photo":"imgU\/default.png","full_name":"MercadoPago","comment":"Primero"}]}{"comment":[{"id_comment":2,"photo":"imgU\/default.png","full_name":"MercadoPago","comment":"Segundo"}]}
所以我想生成一个看起来像这样的json:
[{"id_comment":1,"photo":"imgU\/default.png","full_name":"MercadoPago","comment":"Primero"},
{"id_comment":2,"photo":"imgU\/default.png","full_name":"MercadoPago","comment":"Segundo"}]
我的代码是下一个:
global $id_comentador;
global $id_comentario;
global $comment;
$arregloComentarios = json_decode($row['comentarios'], true);
foreach ($arregloComentarios as $value) {
$id_comentario = $value["id_comentario"];
$id_comentador = $value["id"];
$comment = $value["comment"];
$consultarComentador = "select id,first_name,last_name,foto from users where id='$id_comentador';";
$coo["comment"] = array();
$arregloProyectos = traerDatos($consultarComentador);
$num = count($arregloProyectos);
if ($num > 0) {
foreach ($arregloProyectos as $row2) {
$foto = $row2["foto"];
$foto2 = $row2["first_name"];
$foto3 = $row2["last_name"];
$tmp = array();
$tmp["id_comment"] = $id_comentario;
$tmp["photo"] = $foto;
$tmp["full_name"] = $foto2.''.$foto3;
$tmp["comment"] = $comment;
global $coo;
$coo['comments'] = array();
array_push($coo["comments"], $tmp);
}//Cierra foreach
echo json_encode($coo);
}
}
我将不胜感激您的回答。
解决方案
(复制自评论)
$comments
在顶部之外创建一个数组foreach
并推入该数组而不是$coo["comments"]
. 然后,echo json_encode($comments)
在外面做之后foreach
。
global $id_comentador;
global $id_comentario;
global $comment;
$arregloComentarios = json_decode($row['comentarios'], true);
$comments = [];
foreach ($arregloComentarios as $value) {
$id_comentario = $value["id_comentario"];
$id_comentador = $value["id"];
$comment = $value["comment"];
$consultarComentador = "select id,first_name,last_name,foto from users where id='$id_comentador';";
$arregloProyectos = traerDatos($consultarComentador);
$num = count($arregloProyectos);
if ($num > 0) {
foreach ($arregloProyectos as $row2) {
$foto = $row2["foto"];
$foto2 = $row2["first_name"];
$foto3 = $row2["last_name"];
$tmp = array();
$tmp["id_comment"] = $id_comentario;
$tmp["photo"] = $foto;
$tmp["full_name"] = $foto2.''.$foto3;
$tmp["comment"] = $comment;
$comments[] = $tmp;
}//Cierra foreach
}
}
echo json_encode($comments);
推荐阅读
- autoit - 想要将 Send("sun@123!") 作为字符串传递,但它不起作用
- c++ - 奇怪的未定义引用`vtable
- python - 如何在不更改/删除其他工作表的情况下添加/覆盖现有 xlsx 文件的工作表
- java - 持久性单元抱怨数据源已关闭,即使它没有关闭
- apache-spark - 时间戳转换 Spark Scala
- machine-learning - 如何在不再次对整个数据集进行训练的情况下向已经训练好的模型添加新特征?
- aws-lambda - AWS Lambda 函数订阅了 Cloudwatch 日志并对其进行解析以检索数据元素
- c - 如何为没有名称的结构对象指定存储类说明符?
- mongodb - 带有 mongoDB 的 JHipster 微服务:无法运行类测试(使用 mongoTemplate 创建 bean 时出错)
- python - 在 Python 应用程序中排除“重复”的抓取 URL?