0

我正在尝试在函数中设置一个变量,以便在调用该函数时,它会为脚本提供一个变量值,以通知页面该函数已被调用。这仅显示一条消息:

function MyMessage($display_message)
{
    echo $display_message;
}

这很好,所以当我打电话时:

MyMessage("Updated Database!");

这也有效。问题是该函数在某些页面的头文件之前显示此消息,因为在调用它之前,标题位于页面底部。是否有可能使它像:

function MyMessage($display_message)
{

    $function_ran = 1;

    echo $display_message;

    return $function_ran;

}

然后在脚本中如果我显示

if ( $function_ran != 1 )
{
    include("header.php");
}

这样,如果函数没有运行,它只会显示标题。问题是调用函数时没有返回 $function_ran 值。我怎样才能做到这一点?

4

6 回答 6

2

如果您不想使用全局变量,则需要存储函数的结果:

$function_ran = MyMessage("Updated Database!");
if ( $function_ran != 1 )
{
  include("header.php");
}
于 2013-10-24T00:21:09.917 回答
1

创建一个全局并确保$function_ran在函数中使用全局版本。

$function_ran = 0;

# stuff

function MyMessage($display_message)
{
    global $function_ran;
    $function_ran = 1;
    echo $display_message;
}
于 2013-10-24T00:19:39.123 回答
1

如果您真的想使用函数的返回值,则必须将返回值分配给一个变量,例如:

$function_ran = MyMessage("Updated Database!");

当然,也可以$function_ran全局化,但你不必使用返回。

我肯定会去分配返回值,因为这样更透明,编程风格也更好。

希望有帮助

于 2013-10-24T00:22:47.563 回答
1

代替在调用函数之前进行检查,函数可以使用静态变量来避免两次执行其工作:

function MyMessage($display_message) {
    static $function_ran = false;

    if ($function_ran) {
        return;
    }

    $function_ran = true;
    echo $display_message;
}
于 2013-10-24T00:24:36.830 回答
0

你应该使用会话,你应该使用会话处理程序并使用它,你可以为这个函数的返回值设置一个会话。

于 2013-10-24T00:23:24.830 回答
0

您可以将标志存储在全局中,但要从函数中修改全局变量,您需要使用 global 关键字。

就像是:

$function_ran = 0;

function MyMessage($display_message) {
  global $function_ran;

  $function_ran = 1;
  echo $display_message;
}
于 2013-10-24T00:23:39.357 回答