PHP 匿名函数 引用变量 调用自身的问题

$locale = 'zh_CN';

$translations = [
    'zh_CN' => [
        'hello' => '你好',
        'world' => '世界',
    ],
    'jp' => [
        'hello' => '靠你吉娃',
        'world' => '爱上了看到你',
    ]
];

$translate = function($message) use(&$locale,$translations,&$translate){
    $parts = explode(" ",$message);
    if(count($parts) > 1){
        foreach($parts as &$part){
            $part = $translate($part);
        }
        return implode('', $parts);
    }
    return $translations[$locale][$message]??$message;
};


echo $translate('hello  world').PHP_EOL;
$locale = "jp";
echo $translate('hello world').PHP_EOL;


有的时候使用匿名函数需要调用自身来进行递归或者运算,上面就是一个简陋的示例,通过匿名函数自身的调用进行处理翻译,输出结果:

你好世界
靠你吉娃爱上了看到你


说明:

匿名函数(Anonymous functions),也叫闭包函数(closures),可以从父作用域中继承变量。

任何此类继承的变量都应该用 use 语言结构传递进去。

调用自身的话则需要传递自身的一个引用,这样就可以实现递归等各种算法了。




你可能感兴趣的:(PHP 匿名函数 引用变量 调用自身的问题)