【发布时间】:2017-06-14 20:38:48
【问题描述】:
我正在制作一个简单的私人消息系统。 我尝试让所有对话都出现在用户的收件箱中,为此我使用了 foreach 循环。但是,循环似乎没有打印出任何东西。它只给出错误:警告:非法字符串偏移量。
以下是代码示例(在我的原始代码中,我通过查询从数据库中获取这些值)
$result = array();
$result['conversation_id'] = '3';
$result['conversation_subject'] = 'test112';
$result['conversation_last_reply'] = '1485701808';
print_r($result);
foreach($result as $conversation){
echo $conversation['conversation_subject'];
}
当我使用 print_r 时,会打印出正确的结果(3、test112 和 1485701808),但在 foreach 循环中我不断收到警告。 谁能帮我解决这个问题? 谢谢!!
编辑:相关的 PHP 代码
$sql = $db->prepare("SELECT
conversations.conversation_id,
conversations.conversation_subject,
MAX(conversations_messages.message_date) AS conversation_last_reply
FROM conversations
LEFT JOIN conversations_messages ON conversations.conversation_id = conversations_messages.conversation_id
INNER JOIN conversations_members ON conversations.conversation_id = conversations_members.conversation_id
WHERE conversations_members.user_id = {$_SESSION['user_id']}
AND conversations_members.conversation_deleted = 0
GROUP BY conversations.conversation_id
ORDER BY conversation_last_reply DESC");
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);
foreach($result as $conversation){
?>
<div class="conversations">
<h4><a href=""><?php echo $conversation['conversation_subject']; ?> </a></h4>
<p>Last reply: </p>
</div>
<?php
}
编辑:当我尝试回显“conversation_last_reply”时,我也会收到 2 个警告: date() 期望参数 2 为整数,字符串在 AND 中给出警告:非法字符串偏移量。
这是我试图回显日期的内容:
echo date('d/m/Y H:i:s', $conversation['conversation_last_reply']);
【问题讨论】:
-
$conversation['conversation_subject']错误,$conversation不是数组。只需执行echo $conversation;。或者echo $result['conversation_subject']; -
@RajdeepPaul 当我这样做时,我得到以下输出:3test1121485701808,但我只想要 test112
-
@C.T.您不需要 that
foreach循环,直接从$result数组访问元素 -echo $result['conversation_subject']; -
@RajdeepPaul 问题是我想要一个所有对话的列表,所以我需要一个 foreach 循环。当只有 1 次对话时,没关系。但是当用户有多个对话时,我想循环这些对话,为所有对话创建一个并将对话主题作为