在PHP循环中返回多个变量

时间:2017-05-14 21:25:09

标签: php loops pdo return echo

我想在loop内返回多个通知。我有2个函数,第一个从数据库中提取通知,第二个用于仪表板标题。仪表板标题是显示通知的位置。

现在,问题是,由于某种原因,只会显示一个通知。我已尝试将return内的loop更改为echo,但会在dashboardTop()开头输出通知。

出了什么问题,我该如何解决?

public function loopNotifications() {
    $stmt = $this->conn->prepare("SELECT * FROM notification WHERE isto=:user_id");
    $stmt->execute(array(':user_id'=>$_SESSION['user_id']));

    while ($notification = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $from = $this->pullName($notification['isto']);
        return '<li><a href="javascript:;">' . $notification['content'] . '</a></li>';
    }
}

public function dashboardTop() {
    echo '
                <div class="collapse navbar-collapse">
                    <ul class="nav navbar-nav navbar-right">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                                <i class="material-icons">notifications</i>
                                <span class="notification">' . $this->notificationCount() . '</span>
                                <p class="hidden-lg hidden-md">Notifications</p>
                            </a>
                            <ul class="dropdown-menu">
                                ' . $this->loopNotifications() . '
                            </ul>
                        </li>
                        <li>
                            <a href="index.php?page=profile" class="dropdown-toggle" data-toggle="dropdown">
                               <i class="material-icons">person</i>
                               <p class="hidden-lg hidden-md">Profile</p>
                            </a>
                        </li>
                    </ul>
                </div>
    ';
}

1 个答案:

答案 0 :(得分:0)

public function loopNotifications() {
    $stmt = $this->conn->prepare("SELECT * FROM notification WHERE isto=:user_id");
    $stmt->execute(array(':user_id'=>$_SESSION['user_id']));
    $out=''; //empty var tof concaternation
    while ($notification = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $from = $this->pullName($notification['isto']);
        $out.= '<li><a href="javascript:;">' . $notification['content'] . '</a></li>'; //concaternate each line in to string
    }
return $out; //return whole string
}

public function dashboardTop() {
    echo '
                <div class="collapse navbar-collapse">
                    <ul class="nav navbar-nav navbar-right">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                                <i class="material-icons">notifications</i>
                                <span class="notification">' . $this->notificationCount() . '</span>
                                <p class="hidden-lg hidden-md">Notifications</p>
                            </a>
                            <ul class="dropdown-menu">
                                ' . $this->loopNotifications() . '
                            </ul>
                        </li>
                        <li>
                            <a href="index.php?page=profile" class="dropdown-toggle" data-toggle="dropdown">
                               <i class="material-icons">person</i>
                               <p class="hidden-lg hidden-md">Profile</p>
                            </a>
                        </li>
                    </ul>
                </div>
    ';
}