在switch构造中调用和声明的函数会产生错误

dkj*_*ain 5 php

我是PHP的新手.那么我所指的文字说引用
函数可以在你的程序中的任何地方定义.

上面的语句适用于代码块1但不适用于代码块2. KINDLY EXPLAIN?

代码块1:

<?php
test();
function test()
{
    echo "Hello Inside the function";
}
?>
Run Code Online (Sandbox Code Playgroud)

代码块2:

<?php
$no=1;
switch ($no)
{
case "1":
    test();
function test()
    {
    echo "Hello test";
        }
 }
?>
Run Code Online (Sandbox Code Playgroud)

Sta*_*asM 5

从理论上讲,可以在“任何地方”定义功能。在实践中,有一个窍门。技巧如下:当PHP读取并编译脚本的源代码时,它将查找函数定义,并且如果函数定义位于全局上下文中(而不是if,switch等内部),则将立即对其进行定义。但是,如果它在这样的构造内,或者在另一个函数等内,则仅当控件通过function()语句所在的行时才定义它。

因此,代码块1可以工作-因为该函数处于全局上下文中,所以PHP将在运行任何代码之前对其进行定义。但是在代码块2中,该函数在switch上下文中,因此仅当控制通过第7行时才定义该函数。但是由于您尝试在第6行调用它,因此尚未定义!所以PHP错误出来了。

这里的建议永远不要在条件等中定义函数。除非您将其定义为条件定义-然后注意不要在定义它们之前调用它们。


Pee*_*Haa 1

不能在语句中声明函数switch

但是,您可以执行以下操作:

<?php
$no=1;
switch ($no)
{
    case "1":
        test();
        break;
}

function test()
{
    echo "Hello test";
}
?>
Run Code Online (Sandbox Code Playgroud)

只需从switch.

该函数仅在被调用时执行,因此无关紧要。

编辑

该引用 ( ) 的大概意思Functions can be defined anywhere within your program.是:

您可以在脚本中调用函数之前甚至之后声明它们。