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 语言结构传递进去。

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值