因此...
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在函数内部提供的数据?
答案 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;
}