displayUsers()
在引号内。它被解释为一个字符串。你要
switch($_GET['page']) {
case '#userlist': $page = '<div class="innerbox">' . displayUsers() . '</div>'; break;
}
这将连接字符串内 displayUsers() 的返回值,假设 displayUsers() 返回代码。我认为您在解析双引号字符串中的变量时混淆了此功能。这不适用于函数。
你也可以使用case '#userlist': $page = sprintf('<div class="innerbox">%s</div>', displayUsers(); break;
在此处阅读 sprintf:http: //php.net/manual/en/function.sprintf.php
如果displayUsers()
实际输出代码本身,那么您可以使用
switch($_GET['page']) {
case '#userlist': echo '<div class="innerbox">'; displayUsers(); echo '</div>'; break;
}
发生的情况是打印开始标签,然后调用函数(打印代码),然后打印结束标签,按此顺序。
如果你得到了,function not defined()
那么它就是它听起来的样子。该函数尚未在当前脚本中定义。
PHP 是如何工作
的 每次请求页面时(有人访问“foo.php”),您的服务器和 PHP 引擎从某个目录获取文件(foo.php),对其进行解析,然后(通常)将某些内容发送回用户以 HTML 文档的形式。每个页面就像一个“脚本”,有点像一个迷你应用程序,编译一次,执行一次,然后就忘记了。
因此,假设在您displayUsers()
定义的主页上。
//index.php
function displayUsers() {
//some code...
}
echo "Welcome to my website!", "<br />", 'Click <a href="foo.php">Here</a>.';
当有人访问您的主页时,displayUsers()
已定义,耶!但是,之后就被遗忘了-PHP引擎在加载并完成脚本后已将其丢弃,并且displayUsers()
在您到达时当然不知道是什么foo.php
。
所以,你可以做什么?
如果您只在一个页面上使用该函数,请在该页面上声明它。请记住,每个文件都被视为一个脚本。PHP 引擎不会跟踪用户会话中的函数。
如果您在多个脚本中使用该函数,请将您的函数包含在某个“中央”文件中,并将其包含在您需要的任何地方。我真的建议您阅读更多 PHP 和include
; 我不打算解释 PHP 的基础知识。你需要做更多的功课。