【问题标题】:my php array only displays one element我的 php 数组只显示一个元素
【发布时间】:2014-03-28 23:02:56
【问题描述】:

我试图从数组中获取元素“消息”,但只返回 1 个元素。 但是,如果我从“foreach”循环中回显数组,它会显示所有消息,但如果我只是回显以下内容:

这是它的输出:

'在这里留言'

2014-03-25 22:38:46

'这里的号码'

'在这里留言'

2014-03-25 22:38:46

'这里的号码'

'在这里留言'

2014-03-25 22:38:46

'这里的号码'

我收到以下回复:

'在这里留言'

2014-03-25 22:38:46

'这里的号码'

只显示最新消息,我知道问题出在事实上,因为我实际上没有数组,因为我从另一个来源检索数据,但我真的试图只显示前 2 或 3 条消息我无法运行数组像往常一样,我怎样才能写出一个只收到 2 条消息的解决方案

【问题讨论】:

  • 您是否检查了从 api.txtlocal.com/get_messages/ 获得的原始响应,如果没有,可能是同一条消息在那里多次返回。
  • 你能做到吗:print_r($arr); ?
  • @Peter M 我检查了原始响应,我的消息在正确的 seq 中从最新到最旧,在我的则相反
  • @veilkrand 是的,我可以像 echo 一样打印它吗?

标签: php arrays api loops foreach


【解决方案1】:

您是否尝试将每条消息添加到字符串然后回显它?如果是这样,试试这个:

foreach($arr['messages'] as $message)
    { 
        $strMessage .= $message['message']."<br /><br />" . $message['date']."<br /><br />" . $message  ['number']."<br /><br />"; 
    }


echo $strMessage;

在您的示例中,您实际上并没有对这些值做任何事情,而在这里我将它们全部放入一个字符串中以进行回显。

如果您只想要一组结果,您可以使用 for 循环,如下所示:

for (var $i = 0; $i <= 2; $i++) {
    $strMessage .= $arr["messages"][$i]["message"] . "<br />";
}
echo $strMessage;

或者一个带中断的 foreach 循环(不过我更喜欢 for 循环):

$i = 1;
foreach ($arr["messages"] as $message) {
    if ($i == 3) break;
    $strMessage .= $message["message"];
    $i++;
}
echo $strMessage;

我希望这会有所帮助!

【讨论】:

  • 在第一个示例中,他在 foreach 循环中回显了消息,因此如果消息包含不同的数据,它应该显示不同的数据。
  • 马特你是个天才!有效!显示我需要的消息数量:) 但是马特它得到了倒数第二条和倒数第三条消息,我怎样才能让它只显示第一条新消息,自从 iv 回显以来就是这样,最后一条出现在第一个并且新的出现在列表的底部,对此有什么想法吗?
【解决方案2】:

你实际上并没有 echo 整件事;

打印的是循环中的最后一行。

foreach($arr['messages'] as $message)
{ 
    echo $message['message']."<br /><br />"; 
    echo $message['date']."<br /><br />"; 
    echo $message  ['number']."<br /><br />"; 
}


echo $message;

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 2017-06-29
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2018-05-01
    • 2014-01-08
    • 2015-09-11
    • 2022-07-21
    相关资源
    最近更新 更多