这可能很奇怪,可能不起作用但我想在我放弃这个想法之前检查一下。本质上,我试图将函数的结果用作另一个函数的参数之一。例如 - function1($ param1,function2($ param1));。
我包含的代码输出了我想要的所有内容,我唯一的问题是它以错误的顺序输出它 - 而不是输出:logos,h2,form,h2,form;它输出:form,h2,logos,form,h2。
// Display list
function ul($c, $p){
echo '<ul class="'.$c.'">'.$p.'</ul>';
}
// Display list item
function li($c, $p){
echo '<li class="'.$c.'">'.$p.'</li>';
}
// Display navigation
function nav(){
require 'strings.php';
// If the user is not logged in, display the login form
if(!isset($_SESSION[$uss])){
$nav = li('', require_once 'log_in.php');
// Otherwise provide the user information and navigation
}else{
$nav = li($lks, $_SESSION[$uss][$uns]).
li($dss, $uss.' Id: '.$_SESSION[$uss]['id']).
li($dss, $uss.' Type: '.$_SESSION[$uss]['type']).
'<div id="display_projects_container">'.
require_once('display_projects.php').
'</div>'.
li($lks, '<a href="newsfeed.php" class="'.$lks.'">News Feed</a>').
li($dss, 'Check for updates.').
li($lks, '<a href="task_list.php" class="'.$lks.'">Task List</a>').
li($dss, 'Tasks to be completed.').
li($lks, '<a href="logout.php" class="'.$lks.'">Log Out</a>').
li($dss, 'Time for a burrito!');
}
echo '<div id="left_column">
<!--After Breakpoint Logo-->
<img src="logo.png" class="after_breakpoint_logo" />';
ul('navigation', '<!--Before Breakpoint Logo-->'.
li('before_breakpoint_logo', '<a href="index.php">
<img src="logo.png" class="before_breakpoint_logo" /></a>').
$nav);
echo '</div><div id="content_container"><div id="content">';
}
有解决方法吗?或者这是不可能做到的?
答案 0 :(得分:1)
问题在于您将结果回显到输出。相反,您应该使用li
和ul
函数来构建和return
一个字符串,然后调用者可以回应或按照自己喜欢的方式执行操作。因此,您的ul
和li
函数应该变为:
function ul($c, $p){
return '<ul class="'.$c.'">'.$p.'</ul>';
}
function li($c, $p){
return '<li class="'.$c.'">'.$p.'</li>';
}
然后,您可以多次拨打li
来设置$nav
。然后把它们放在一起,在最后的召唤中,你会有:
echo ul('navigation', '<!--Before Breakpoint Logo-->'.
li('before_breakpoint_logo', '<a href="index.php">
<img src="logo.png" class="before_breakpoint_logo" /></a>'). $nav);