如何将下面代码中的php函数转换为非函数。
<?php
require_once ('./mysqli_connect.php'); // Connect to the db.
function make_list ($parent)
{
global $tasks;
echo '<ol>';
foreach ($parent as $task_id => $todo)
{
echo "<li>$todo";
if (isset($tasks[$task_id]))
{
make_list($tasks[$task_id]);
}
echo '</li>';
}
// Close the ordered list:
echo '</ol>';
}
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT task_id, parent_id, task FROM tasks WHERE date_completed='0000-00-00 00:00:00' ORDER BY parent_id, date_added ASC");
if (!$dbc)
{
// There was an error...do something about it here...
print mysqli_error();
}
$tasks = array();
while (list($task_id, $parent_id, $task) = mysqli_fetch_array($dbc, MYSQLI_NUM))
{
// Add to the array:
$tasks[$parent_id][$task_id] = $task;
}
make_list($tasks[0]);
mysqli_close(); // close the connection
// Include the html footer
include('./includes/footer.html');
?>
保留我的代码是不是更好,即使我没有发布的其余代码是非函数形式。
答案 0 :(得分:8)
首先:您无法以简单的方式将递归函数转换为意大利面条代码。
第二:没有必要这样做。将您的逻辑,操作分离为函数,以及逻辑和数据表示。不要使用html标记垃圾邮件代码。使用某种模板机制。
答案 1 :(得分:1)
除了erenon的答案(我完全支持,他已经说明了为什么你的问题导致错误的方向):
使用(或创建)一些隐藏连接,查询执行等的数据库抽象类,这样可以更容易地更改数据库或以后适应界面更改,并且您有一个错误处理的中心位置。
并且不要以超级用户身份与数据库通信..