php 执行array map,PHP: array_map - Manual

Hope I'm not late to the party, here's my function to apply array_map to the *keys* of an array.

Extra array arguments will be used for the callback function's parameters just like with array_map, with the difference that a string is also allowed: it will just be used to create an array of appropriate length with as each value that string. Arrays are left alone (and will be padded with nulls by array_map as needed).

// array_map_keys($callback, $array, [$args, ..]) /functionarray_map_keys($callback,$array/* [, $args ..] */) {$args=func_get_args();

if (!is_callable($callback))trigger_error("first argument (callback) is not a valid function",E_USER_ERROR);

if (!is_array($array))trigger_error("second argument must be an array",E_USER_ERROR);$args[1] =array_keys($array);// If any additional arguments are not arrays, assume that value is wanted for every $array item.

// array_map() will pad shorter arrays with Null valuesfor ($i=2;$i

if (!is_array($args[$i])) {$args[$i] =array_fill(0,count($array),$args[$i]);

}

}

returnarray_combine(call_user_func_array('array_map',$args),$array);

}// Some examples:$arr= array('foo'=>123,'bar'=>456);// simply uppercase keys:var_dump(array_map_keys('strtoupper',$arr));// or..var_dump(array_map_keys(function($input) {returnstrtoupper($input);},$arr));// >> array(2) { ["FOO"]=>int(123) , ["BAR"]=> int(456) }

// Add a prefix 'myvar_':var_dump(array_map_keys(function($input,$prefix) {return$prefix.$input;},$arr,'myvar_'));// >> array(2) { ["myvar_foo"]=>int(123) , ["myvar_bar"]=>int(456) }

// Apart from the (static string) prefix, we also number them:$arr= array('foo'=>123,'bar'=>456,'bazz'=>789,'yadda'=>'0AB');var_dump(array_map_keys(function($input,$middle,$number) {return$number.':'.$middle.$input;},$arr,'myvar_',range(1,count($arr))));// >> array(4) { ["1:myvar_foo"]=>int(123) , ["2:myvar_bar"]=>int(456) , ["3:myvar_bazz"]=>int(789) , ["4:myvar_yadda"]=>string(3) "0AB" }?>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值