我正在尝试循环一个函数,而类似于WordPress。我使用该函数返回一个true或false的布尔值。现在这是我的功能。现在,只有它返回true或false,我知道我必须让我的函数has_rows();
在查看我的所有行后变为false。这可能吗?
所以我想我的问题是,如果有可能,以及如何在while循环中循环一个函数,如下例所示。我知道这是可能的,因为wordpress使用了一个函数,我的问题是如何。
这就是我尝试过的。循环不会停止。
function has_rows () {
global $Q_INFO;
global $DB_CONN;
static $COUNT; // STATIC TO REMEMBER LAST TIME FUNCTION CALLED
$COUNT = @$COUNT ? $COUNT++ : 0; // IF NOT SET, SET TO 0 AND COUNT EACH LOOP
echo $QUERY = "SELECT * FROM `" . $Q_INFO['table'] . "` LIMIT " . $COUNT . ", 1";
$STMT = $DB_CONN->prepare($QUERY);
$STMT->execute();
$RESULT = $STMT->get_result();
$STMT->close();
if ($RESULT->num_rows > 0) {
return true;
} else {
return false;
}
}
我就像在wordpress中一样调用它:
<?php if (has_rows()):?>
<?php while (has_rows()): ?>
Hi World!!
<?php endwhile; ?>
<?php endif; ?>
这是我的最终代码:
我必须为if(has_rows()):
中函数的第一次调用添加另一个静态变量,然后我使用下面选择的答案来完成剩下的工作。
感谢帮助人员!
function has_rows () {
global $Q_INFO;
global $DB_CONN;
static $I = 0;
static $COUNT = 0;
if ($I == 0) {
$QUERY = "SELECT * FROM `" . $Q_INFO['table'] . "`";
$I++;
} else {
$QUERY = "SELECT * FROM `" . $Q_INFO['table'] . "` LIMIT " . $COUNT . ", 1";
$COUNT++;
}
$STMT = $DB_CONN->prepare($QUERY);
$STMT->execute();
$RESULT = $STMT->get_result();
$STMT->close();
if ($I != 0) {
while ($ROW = $RESULT->fetch_assoc()) {
foreach ($ROW as $KEY=>$VALUE) {
$Q_INFO[$KEY] = $VALUE;
}
}
}
if ($RESULT->num_rows > 0) {
return true;
} else {
return false;
}
}
答案 0 :(得分:1)
第一次运行时,$COUNT
为0
,其值为布尔false
。因此,$COUNT = @$COUNT ? $COUNT++ : 0;
再次将其设置为0
。
只需取出该行,明确初始化$COUNT
至0
,并将$COUNT++;
置于最终if
声明之前。
function has_rows () {
global $Q_INFO;
global $DB_CONN;
static $COUNT = 0; // STATIC TO REMEMBER LAST TIME FUNCTION CALLED
// Other code here...
$COUNT++;
if ($RESULT->num_rows > 0) {
return true;
} else {
return false;
}
}
答案 1 :(得分:1)
如果您尝试过像一个数组,就像wordpress一样,试试这个:
$posts = array('post1', 'post2', 'post3');
function has_posts()
{
// this line will make sure that you have a non empty array
if ( ! is_array($posts) or ! count($posts)) return false;
else return each($posts);
}
while ($post = has_posts())
{
echo $post;
}