gpt4 book ai didi

php - 在 switch 构造中调用和声明的函数会出错

转载 作者:可可西里 更新时间:2023-11-01 13:51:11 26 4
gpt4 key购买 nike

我是 PHP 新手。好吧,我指的是引号
可以在程序中的任何位置定义函数。

以上语句适用于代码块 1 但不适用于代码块 2。请解释一下?

代码块 1:

<?php
test();
function test()
{
echo "Hello Inside the function";
}
?>

代码块 2:

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

最佳答案

理论上,是的,函数可以在“任何地方”定义。在实践中,有一个技巧。诀窍如下:当 PHP 读取和编译脚本的源代码时,它会查找函数定义,如果函数定义在全局上下文中(而不是在 if、switch 等内部),它将立即被定义。但是,如果它在这样的构造内部,或在另一个函数内部等,则只有当控制通过 function() 语句所在的行时,它才会被定义。

因此,代码块 1 有效 - 因为函数在全局上下文中,所以 PHP 将在运行任何代码之前定义它。但是在代码块 2 中,该函数在 switch 的上下文中,因此只有在控制通过第 7 行时才会定义它。但是由于您尝试在第 6 行调用它,所以它还没有定义!所以 PHP 出错了。

这里的建议是永远不要在条件等中定义你的函数,除非你的意思是它是条件定义——然后注意不要在它们被定义之前调用它们。

关于php - 在 switch 构造中调用和声明的函数会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com