由于非法的字符串偏移,foreach循环不会回显?

时间:2017-01-29 16:33:55

标签: php foreach

我正在建立一个简单的私人消息系统。 我尝试将所有会话都显示在用户的收件箱中,我使用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 Warning中给出的字符串:非法字符串偏移量。

这是我试图回应日期:

 echo date('d/m/Y H:i:s', $conversation['conversation_last_reply']);

1 个答案:

答案 0 :(得分:0)

来自OP's comment

  

我想要一个所有会话的列表,所以我需要一个foreach循环。当只有一次谈话时无关紧要。但是,如果用户有多个会话,我想循环使用这些会话,请为所有会话创建一个会话,并将会话主题设为<h2>

使用while()循环代替foreach循环来循环遍历结果集中的所有会话。

// your code
$sql->execute();
while($conversation = $sql->fetch(PDO::FETCH_ASSOC)){
    ?>
    <div class="conversations">
        <h2><a href=""><?php echo $conversation['conversation_subject']; ?> </a></h2>
        <p>Last reply: </p>
    </div>
    <?php
}