功能不会返回值?

时间:2013-10-24 00:17:48

标签: php function

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

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值。我怎么能这样做?

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

$function_ran设为全局,并确保在函数中使用全局版本。

$function_ran = 0;

# stuff

function MyMessage($display_message)
{
    global $function_ran;
    $function_ran = 1;
    echo $display_message;
}

答案 2 :(得分:1)

如果你真的想要使用函数的返回,你必须将返回值分配给变量,如:

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

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

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

希望有所帮助

答案 3 :(得分:1)

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

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

    if ($function_ran) {
        return;
    }

    $function_ran = true;
    echo $display_message;
}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

类似的东西:

$function_ran = 0;

function MyMessage($display_message) {
  global $function_ran;

  $function_ran = 1;
  echo $display_message;
}