php的闭包实现递归

eg

已知字符串的数组值转化对应的键值字符串
已知数组键值转化数组值字符串


function getBrandEmailList(){
	return [
		1=>[
		    'index'=>1,
            'name' => 'test1',
            'email' => '111111@qq.com'
        ],
		2=>[
		    'index'=>2,
            'name' => 'test2',
            'email' => '22222222@qq.com'
        ],
		3=>[
		    'index'=>3,
            'name' => 'test3',
            'email' => '333333333@qq.com'
        ],
	];
}

function getBrandEmails($ks = []){
	$val = $ks;
    $fns = function (&$i,&$str) use (&$fns,&$val){
        if ($i < count($val) ) {
        	$k =  $val[$i];
            $str .= getBrandEmailList()[$k]['email'].',';
            $i++;
            $fns($i, $str);
        }

        return $str;
    };
    return rtrim($fns($i=0,$str=''),',');
}


function getBrandKey($emails=''){
	if (empty($emails)) {
		return false;
	} else {
		$emailArray = array_filter( explode(',', $emails) );
		$emailArrFlip = array_flip( array_column(getBrandEmailList(),'email', 'index') );
        $fns = function (&$i,&$str) use (&$fns,&$emailArrFlip,&$emailArray){
            if ($i < count($emailArray) ) {
                $k =  $emailArray[$i];
                $str .= $emailArrFlip[$k].',';
                $i++;
                $fns($i, $str);
            }
            return $str;
        };

        return rtrim($fns($i=0,$str=''),',');
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值