为什么函数在ajax文件中未定义 - 在AJAX文件中函数顺序是否重要?

use*_*493 1 php ajax

看到我的函数在AJAX请求中未定义,我真的很惊讶.我想知道AJAX文件中的函数顺序是否重要?以下代码将向您显示我的问题 -

这是ajax.php文件,由index.php中的jquery/ajax请求调用.它应该只是打印名称 -

<?php
if(isset($_POST))
    {
        $name = 'admin';
        echo display_name($name);
        function display_name($name)
        {
            return $name;
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)

但是当这个文件被调用时,我得到 -

Fatal error: Call to undefined function display_name() 
Run Code Online (Sandbox Code Playgroud)

但是,当我改变代码的顺序,即像这样的功能 -

<?php
if(isset($_POST))
    {
        $name = 'admin';
        function display_name($name)
        {
            return $name;
        }
        echo display_name($name);
    }
?>
Run Code Online (Sandbox Code Playgroud)

然后显示 -

admin
Run Code Online (Sandbox Code Playgroud)

多奇怪啊!

因此,如果真正的功能可用性顺序很重要,那么以下代码如何工

它是简单的文件,不是由AJAX请求调用的.我只是加载文件,无论函数写在哪里都无关紧要.所有人都使用任何行代码订单 -

<?php
$name = 'admin';
echo display_name($name);
function display_name($name)
{
    return $name;
}
?>
Run Code Online (Sandbox Code Playgroud)

以下代码片段也在运作 -

<?php
$name = 'admin';
function display_name($name)
{
    return $name;
}
echo display_name($name);
?>
Run Code Online (Sandbox Code Playgroud)

请告诉我这种差异背后的原因.在页面加载代码工作和ajax请求它没有.为什么函数display_name()是否存在未定义?

Que*_*tin 5

这与Ajax无关.

PHP手册:

除非有条件地定义函数,否则在引用函数之前不需要定义函数

该命令在第一个示例中很重要,因为该函数位于if语句中.