我是PHP的新手。好吧,我所指的文字说引用
可以在程序中的任何位置定义函数。
上述语句适用于代码块1但不适用于代码块2. KINDLY EXPLAIN?
代码块1:
<?php
test();
function test()
{
echo "Hello Inside the function";
}
?>
代码块2:
<?php
$no=1;
switch ($no)
{
case "1":
test();
function test()
{
echo "Hello test";
}
}
?>
答案 0 :(得分:5)
理论上,是的,功能可以“随处”定义。在实践中,有一个技巧。诀窍如下:当PHP读取并编译脚本源时,它会查找函数定义,如果函数定义在全局上下文中(不在if,switch等内),它将立即定义。但是,如果它在这样的构造内部,或者在另一个函数内部等,它将仅在控制传递function()语句所在的行时定义。
因此,代码块1起作用 - 因为该函数在全局上下文中,因此PHP将在运行任何代码之前定义它。但是在代码块2中,函数位于switch的上下文中,因此只有当控件通过第7行时才会定义它。但是由于你试图在第6行调用它,它还没有被定义!所以PHP出错了。
这里的建议永远不会在条件等中定义你的函数,除非你的意思是条件定义 - 然后注意不要在它们被定义之前调用它们。
答案 1 :(得分:2)
你可以在switch语句中声明函数,但它不是那么好。你有错误,因为你调用函数然后声明它。首先你应该声明函数然后使用它。
<?php
$no=1;
switch ($no)
{
case "1":
function test()
{
echo "Hello test";
}
test();
}
?>
答案 2 :(得分:1)
您无法在switch
语句中声明函数。
但是你可以做的是:
<?php
$no=1;
switch ($no)
{
case "1":
test();
break;
}
function test()
{
echo "Hello test";
}
?>
只需从switch
删除该功能。
该函数仅在被调用时执行,因此无关紧要。
修改强>
该引用(Functions can be defined anywhere within your program.
)的合理含义是:
您可以在脚本中调用函数之前或之后声明函数。
答案 3 :(得分:0)
有几个问题。你需要使用
case 1:
用于开关,否则它将查找等效于“1”的字符串。 “1”!= 1(第一个是字符串,第二个是整数)
虽然你的文字确实说任何地方都可以定义功能,但实际上它们并不代表任何地方。您无法在代码块内定义函数,因此您必须在交换机外定义函数:
<?php
$no = 1;
switch ($no) {
case 1:
test();
break;
}
function test()
{
echo "I'm inside the test function!";
}
?>
否则事情就会变得疯狂。