【发布时间】:2015-08-24 14:00:16
【问题描述】:
我有一个 mysql 表 (name:"messages"),它有如下三列:
messageID、fromUserID、内容
我希望使用以下格式的 php 脚本输出 json;我需要分离每个用户的消息(fromUserID 列)。
JSON 输出:
{
"newCount":"x",
"messages":
[
{
"fromUserID":"x",
"messagesArray":
[
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"}
]
},
{
"fromUserID":"y",
"messagesArray":
[
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"}
]
},
{
"fromUserID":"z",
"messagesArray":
[
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"},
{"messageID":"x","content":"xxx"}
]
}
]
}
我的 PHP 脚本:
$query = mysqli_query($con,"SELECT * FROM messages ORDER BY fromUserID");
$outputArray = array();
$outputArray['hasNew'] = mysqli_num_rows($query);
$messagesArray = array();
if($query)
{
while($row = mysqli_fetch_assoc($query))
{
$MSGArray = array();
$messagesArray['fromUserID'] = $row['fromUserID'];
$MSGArray['messageID'] = $row['messageID'];
$MSGArray['content'] = $row['content'];
$messagesArray['MessagesArray'][] = $MSGArray;
}
$outputArray['Messages'][] = $messagesArray;
}
echo json_encode($outputArray);
但是使用上面的脚本我给出了一个错误的结果如下:
{
"hasNew":6,
"Messages":
[
{
"fromUserID":"24",
"MessagesArray":
[
{"messageID":"4","content":"test"},
{"messageID":"3","content":"test"},
{"messageID":"6","content":"test"},
{"messageID":"5","content":"test"},
{"messageID":"1","content":"test"},
{"messageID":"2","content":"test"}
]
}
]
}
我的 PHP 脚本只使用最后一个 fromUserID 值来分组消息!!!
请让我知道我错在哪里......
【问题讨论】:
-
这种结构不适合这种事情。您将应该作为键的内容存储为值,这意味着您必须搜索整个主数组才能找到需要插入新数据的位置。
-
@MarcB,你能给我推荐一个好方法吗?!
-
尝试替换 $messagesArray['fromUserID'] = $row['fromUserID'];通过 $messagesArray['fromUserID'][$row['fromUserID']] = array(),然后将来自 fromUserID 的 msg 插入其中。
-
@Armage,坦克给你提示;它工作正常