2

我有一个显示用户列表的功能,即displayUsers().

基本上,我没有为每个页面使用 1 个不同的 php 文件,而是使用了 switch 函数来加载类似的内容。这是其中 1 页的示例。

switch($_GET['page'])  {

   case '#userlist' : $page = '
       <div class="innerbox">
            displayUsers();
       </div> '; break;
}

如您所见,它应该显示div标签并加载函数,但是不是加载函数,而是显示文本“displayUsers()”。我理解它为什么这样做,但是我不确定如何更改它,以便实际运行该功能而不是显示它。任何帮助将非常感激。

问候

4

4 回答 4

4

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 的基础知识。你需要做更多的功课。

于 2012-07-11T17:22:05.260 回答
1

您需要使用 . (点)在使用单引号时附加字符串:

$page = '<div class="innerbox">'.displayUsers().'</div>';
于 2012-07-11T17:21:33.883 回答
0

试试这个

case '#userlist' : $page = '
           <div class="innerbox">'
                .displayUsers().
           '</div> '; break;
于 2012-07-11T17:22:09.407 回答
0

以这种方式使用连接.运算符:

switch($_GET['page'])  {

   case '#userlist':
       $page = '
       <div class="innerbox">'
       . displayUsers() .
       '</div> ';
       break;
}
于 2012-07-11T17:23:29.933 回答