如何在PHP代码中使循环工作失效?

时间:2016-05-14 16:20:05

标签: php mysqli

 <?php function getnews()
{

global $db;

$news=$db->query("select * from news order by news_id desc");

$row=$news->fetch_object();

return $row;

}?>

`

foreach (getnews() as $result)
 { 
   echo $result->news_title . "<br>";
 }
?>

但是foreach不能正常工作

任何帮助

1 个答案:

答案 0 :(得分:1)

您的getnews()函数只返回数据库中的一行,即使您的查询将全部获取它们......也许会考虑getnews()函数中的一个循环,它依次返回每一行,也许使用生成器,以便您可以在foreach循环中使用它们

function getnews() {
    global $db;
    $news=$db->query("select * from news order by news_id desc");
    while ($row=$news->fetch_object()) {
        yield $row;
    }
}

foreach (getnews() as $result) { 
   echo $result->news_title . "<br>";
}

虽然使用生成器确实需要PHP&gt; = 5.5

如果您使用的是早期版本的PHP,那么在getnews()中构建一个数组并返回该数组,但效率不高:

function getnews() {
    global $db;
    $news=$db->query("select * from news order by news_id desc");
    $items = array();
    while ($row=$news->fetch_object()) {
        $items[] = $row;
    }
    return $items;
}

foreach (getnews() as $result) { 
   echo $result->news_title . "<br>";
}