我想创建一个API,它将来自IMAP服务器的电子邮件发送到JSON输出。我可以得到邮件等。 我使用数组创建JSON输出:
$arr = array('number' => $overview->msgno, 'date' => $overview->date,);
所以,问题是,我在foreach循环中收到邮件。 当我把这行放到循环和
时echo json_encode($arr, JSON_PRETTY_PRINT);
外面,它只打印最后一行。如果我把它放在循环中,它只是一个页面,甚至一个新的支架打开和关闭。我希望所有的输出顺序如下:
{
"1": [
{
"author": "Mister X",
"title": "Here is the title"
"message": "Here it should print the Message"
}]
"2": [
{and so on}]
}
我试过了array_pusch($arr, $msgno, $date)
。我保存在foreach循环中的两个变量但它不起作用:(
希望你能帮助我,
dunklesToast
CODE:
$mbox = imap_open("{mcggehrden.de:143}INBOX", $email, $login)
or die("can't connect: " . imap_last_error());
$MC = imap_check($mbox);
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
foreach ($result as $overview) {
$arr = array();
$number = $overview->msgno;
$date = $overview->date;
array_push($arr, $msgno, $date);
}
echo json_encode($arr, JSON_PRETTY_PRINT);
答案 0 :(得分:1)
你的问题是你已经初始化了想要保存foreach循环中所有数据的数组。因此,每次循环循环时,您都会破坏它所持有的任何先前数据,并仅加载此迭代中的数据
此外,您正在返回一个对象,并且您的JSON结果示例建议您想要一个对象数组,这样您也可以获取所有返回的对象并将其添加到数组中
$mbox = imap_open("{mcggehrden.de:143}INBOX", $email, $login)
or die("can't connect: " . imap_last_error());
$MC = imap_check($mbox);
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
$arr = array();
foreach ($result as $overview) {
$arr[] = $overview;
}
echo json_encode($arr, JSON_PRETTY_PRINT);
答案 1 :(得分:0)
在每次执行循环时都会覆盖数组。要添加元素,您必须执行以下操作:
$arr = array();
foreach ($result as $overview) {
$arr[] = array('number' => $overview->msgno, 'date' => $overview->date,);
}
echo json_encode($arr, JSON_PRETTY_PRINT);
答案 2 :(得分:0)
$return_arr=array();
$g=mysqli_query($con,"select * from YourTableName");
while($j=mysqli_fetch_array($g,MYSQLI_ASSOC))
{
$row_array['arr_msgno']=$j['msgno'];
$row_array['arr_date']=$j['date'];
array_push($return_arr,$row_array);
}
$result['yourTableName']=$return_arr;
echo json_encode($result);
使用这样,它肯定会起作用