2014-03-28 74 views
0

即時嘗試從數組中獲取元素'消息',但只返回1個元素。 但是如果我從「的foreach」循環呼應陣列它會顯示所有的消息,但如果我只是迴應如下:我的php數組只顯示一個元素

這是它輸出:

「在這裏的消息」

2014- 03-25 22時38分46秒

'這裏號'

'在這裏的消息'

2014年3月25日22時38分46秒

'這裏號'

'在這裏的消息'

2014年3月25日22點38分46秒

'這裏號'

我得到如下回應:

'message here'

2014-03-25 22:38:46

「這裏號」

僅出現在最新的消息,我知道其實問題的關鍵在於,因爲我DONOT身體有一個陣列,作爲即時通訊從其他來源獲取的數據,但我真的想只顯示第一2或3條消息我不能像正常運行陣列,我怎麼能寫出一個解決方案,以獲得只有2條消息

+0

您是否檢查了您從api.txtlocal.com/get_messages/獲得的原始響應?如果不是,可能是多次返回相同的消息。 –

+0

你可以這樣做:print_r($ arr); ? – Veilkrand

+0

@ Peter M我檢查了原始響應,我的消息在右邊seq最新到最舊,在我的反面 – user3433444

回答

0

您是否試圖將每條消息添加到一個字符串,然後回顯它?如果是的話,試試這個:

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; 

我希望這有助於!

+0

在第一個例子中,他在foreach循環中回顯消息,所以如果消息包含不同的數據,它應該顯示不同的數據。 –

+0

亞特你是一個天才!有效!顯示我需要的消息的數量:)但是它獲得了最後一秒和最後一秒的最後一條消息,我怎樣才能使它只顯示第一條新消息,它是這樣的,因爲iv已經回顯,最後一條先出現並且新的一個出現在列表的底部,對此有什麼想法? – user3433444

0

你實際上並沒有echo整件事;

打印的內容是循環的最後一行。

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


echo $message;