Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嵌套匿名函数_Php - Fatal编程技术网

Php 嵌套匿名函数

Php 嵌套匿名函数,php,Php,我正在尝试编写一些嵌套的PHP匿名函数,其结构如下图所示,我的问题是:如何使其正常工作而不出错 $abc = function($code){ $function_A = function($code){ return $code; }; $function_B = function($code){ global $function_A; $text = $function_A($code); retur

我正在尝试编写一些嵌套的PHP匿名函数,其结构如下图所示,我的问题是:如何使其正常工作而不出错

$abc = function($code){

    $function_A = function($code){
        return $code;
    };

    $function_B = function($code){
        global $function_A;
        $text = $function_A($code);
        return $text;
    };

    $function_B($code);

};

echo $abc('abc');
输出为致命错误:此行中的函数名必须是字符串:

$text = $function_A($code);

这条消息没有对我说什么:(

这里的问题是您的
$function\u A
不在全局范围内定义,而是在
$abc
范围内定义。如果您愿意,您可以尝试使用
使用
$function\u A
传递到
$function\u B
的范围内:

$abc = function($code){

    $function_A = function($code){
        return $code;
    };

    $function_B = function($code) use ($function_A){
        $text = $function_A($code);
        return $text;
    };

    $function_B($code);

};

在PHP中,要将非
$this
和超全局变量传递到匿名闭包中,必须使用
use
语句

<?php

$abc = function($code){

    $function_A = function($code){
        return "Code: {$code}";
    };

    $function_B = function($code) use ($function_A) {
        $text = $function_A($code);
        return $text;
    };

    return $function_B($code);
};

echo $abc('abc');

$function\u A
未在全局范围内定义。
$function\u A
在外部函数的局部变量范围内定义,而不是全局范围。另请参见