PHP中的多个Foreach循环
您好,我正在制作一个论坛,我使用fetchAll()函数提取数据 我调用这样的函数PHP中的多个Foreach循环,php,foreach,forum,Php,Foreach,Forum,您好,我正在制作一个论坛,我使用fetchAll()函数提取数据 我调用这样的函数 $forum_name = $forum->get_forum_name(); $cat_list = $forum->get_category(); <table width="100%" cellspacing="0" cellpadding="2" border="1"> <?php foreach ($forum_name as $fn) { echo '&l
$forum_name = $forum->get_forum_name();
$cat_list = $forum->get_category();
<table width="100%" cellspacing="0" cellpadding="2" border="1">
<?php
foreach ($forum_name as $fn)
{
echo '<tr><th>' . $fn['forum_name'] . '</th><th>Topics</th><th>Posts</th><th>Latest post</th></tr>';
foreach ($cat_list as $cl)
{
echo '<tr><td>' . $cl['cat_name'] . '</td></tr>';
}
}
?>
</table>
<?php
class Forum
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
// Get forum name title
public function get_forum_name()
{
$query = $this->db->prepare("SELECT * FROM forum");
$query->execute();
return $query->fetchAll();
}
// FORUM CATEGORIES
// add forum category
public function add_category($cat_name, $cat_desc)
{
$query = $this->db->prepare("INSERT INTO forum_cat (cat_name, cat_desc) VALUES (?, ?)");
$query->bindValue(1, $cat_name);
$query->bindValue(2, $cat_desc);
$query->execute();
}
// list all forum categories
public function get_category()
{
$query = $this->db->prepare("SELECT * FROM forum_cat");
$query->execute();
return $query->fetchAll();
}
}
?>
现在我可以这样使用它吗
$forum_name = $forum->get_forum_name();
$cat_list = $forum->get_category();
<table width="100%" cellspacing="0" cellpadding="2" border="1">
<?php
foreach ($forum_name as $fn)
{
echo '<tr><th>' . $fn['forum_name'] . '</th><th>Topics</th><th>Posts</th><th>Latest post</th></tr>';
foreach ($cat_list as $cl)
{
echo '<tr><td>' . $cl['cat_name'] . '</td></tr>';
}
}
?>
</table>
<?php
class Forum
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
// Get forum name title
public function get_forum_name()
{
$query = $this->db->prepare("SELECT * FROM forum");
$query->execute();
return $query->fetchAll();
}
// FORUM CATEGORIES
// add forum category
public function add_category($cat_name, $cat_desc)
{
$query = $this->db->prepare("INSERT INTO forum_cat (cat_name, cat_desc) VALUES (?, ?)");
$query->bindValue(1, $cat_name);
$query->bindValue(2, $cat_desc);
$query->execute();
}
// list all forum categories
public function get_category()
{
$query = $this->db->prepare("SELECT * FROM forum_cat");
$query->execute();
return $query->fetchAll();
}
}
?>
下面是上面调用的PHP代码:
<?php
class Forum
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
// Get forum name title
public function get_forum_name()
{
$query = $this->db->prepare("SELECT * FROM forum");
$query->execute();
return $query->fetchAll();
}
// FORUM CATEGORIES
// add forum category
public function add_category($cat_name, $cat_desc)
{
$query = $this->db->prepare("INSERT INTO forum_cat (cat_name, cat_desc) VALUES (?, ?)");
$query->bindValue(1, $cat_name);
$query->bindValue(2, $cat_desc);
$query->execute();
}
// list all forum categories
public function get_category()
{
$query = $this->db->prepare("SELECT * FROM forum_cat");
$query->execute();
return $query->fetchAll();
}
}
?>
这不会给我任何错误。只需询问这样做是否会减慢脚本的速度,以及这样使用脚本是否是不好的做法。如果需要此数据,则需要此数据,使用嵌套循环并不慢或不好。使用两个嵌套for循环根据这些值生成表相对便宜;开销几乎不存在(假设这是获取和表示数据所需的方式)
如果
$forum\u name
和$cat\u list
变得相当大,您可能会看到一些延迟,但没有很多方法可以对此进行优化。我使用类来实现这一点
$forum_name = $forum->get_forum_name();
$cat_list = $forum->get_category();
<table width="100%" cellspacing="0" cellpadding="2" border="1">
<?php
foreach ($forum_name as $fn)
{
echo '<tr><th>' . $fn['forum_name'] . '</th><th>Topics</th><th>Posts</th><th>Latest post</th></tr>';
foreach ($cat_list as $cl)
{
echo '<tr><td>' . $cl['cat_name'] . '</td></tr>';
}
}
?>
</table>
<?php
class Forum
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
// Get forum name title
public function get_forum_name()
{
$query = $this->db->prepare("SELECT * FROM forum");
$query->execute();
return $query->fetchAll();
}
// FORUM CATEGORIES
// add forum category
public function add_category($cat_name, $cat_desc)
{
$query = $this->db->prepare("INSERT INTO forum_cat (cat_name, cat_desc) VALUES (?, ?)");
$query->bindValue(1, $cat_name);
$query->bindValue(2, $cat_desc);
$query->execute();
}
// list all forum categories
public function get_category()
{
$query = $this->db->prepare("SELECT * FROM forum_cat");
$query->execute();
return $query->fetchAll();
}
}
?>
我们在get\u-forumn\u-name
或get\u-category
中看不到,但是在PHP中使用循环没有什么问题。与什么方法相反?这可能是您最不需要担心的优化问题。我看到的唯一问题是,如果这些值直接来自数据库和客户端,您可能会在某个时候成为问题的受害者。因为$cat\u list
在$forum\u name
的迭代之间不会更改,您可以计算一次$cat_list
行,这样就不必每次都迭代它们。然而,我怀疑你的$cat_列表
最终会改变。所以,无论何时你想要论坛名称,你都会进行查询吗?如果每个请求不止一次呢?不,我只是这样使用$example=$forum->get_forum_name();我在右图上有这样的输出。这将在每次调用数据库时查询它。哈哈,你懂你自己的剧本吗?事实上,它将获得论坛
表中的每一个字段和每一行……在让评论家们了解数据库结构之前,我知道我需要什么,在哪里以及如何使用它。顺便说一句,这只是在乞求论坛还没有结束:)你不知道他的脚本是否容易被脚本注入。你应该删除这篇文章。如果有的话,您应该发布一个脚本的粘贴栏作为注释。这肯定不是答案。