'while(doSome())'我可以这样做吗?

时间:2012-12-09 13:13:50

标签: php

因此...

class postQuery {

public function __construct($args = NULL){

    $post_type = $args['post_type'];
    $limit = $args['limit'];
    $category = $args['cat'];

    global $sql;

    $sql = $sql->query('SELECT * FROM posts');
    $sql = $sql->fetchAll(PDO::FETCH_ASSOC);
}

public function havePosts() {

    global $sql;
    global $rowNum;

    $rowNum = 0;
    $rowMax = count($sql);

    while($rowNum <= $rowMax) {
        return $rowNum;
        $rowNum++;
    }

}
}

hasPosts()函数应在$ rowNum&lt; $ rowMax ......到目前为止一切都还不错......

但是现在,我想用这个函数创建一个while语句,如下所示:

$con = new postQuery();

while($con->havePosts()){
    global $sql;
    global $rowNum;

    return $sql[$rowNum]['title'];
}

如何逐个返回我的WHILE在函数内部提供的数据?

2 个答案:

答案 0 :(得分:0)

您的postQuery课程可能如下所示:

class postQuery() {

  private $currentRow = 0;

  public function havePosts() {
    global $sql;
    if ($this->currentRow == count($sql) - 1)
      return FALSE;
    $this->currentRow++;
    return $this->currentRow - 1;
  }
}

然后你可以循环播放帖子:

while(($rowNum = $conn->havePosts()) !== FALSE) {
  echo $sql[$rowNum]['title'];
}

请注意,我的示例根本不是最佳做法。您应该避免使用全局变量和可以存储到类成员变量的大量数据(例如count($sql))。您还应该修复我的算法,以避免使用像$this->currentRow + 1这样的魔术操作。

答案 1 :(得分:0)

将结果放入数组并返回稍后可以访问的数组

public function havePosts() {
  global $sql;
  global $rowNum;

  $rowNum = 0;
  $rowMax = count($sql);
  $titles=array();
 while($con->havePosts()){
    global $sql;
    global $rowNum;

   $titles[]= $sql[$rowNum]['title'];
  }

  return $titles;

}