https://www.yuque.com/docs/share/a945be3b-a139-4738-87d2-19fc53a64890
https://www.php.net/manual/zh/function.array-map.php
定义和用法
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。?>
<?php
$project = [
"ys001"=>"kz",
"jsb001"=>"kz_j",
];
$list = [
["product"=>"ys001","value"=>1],
["product"=>"jsb001","value"=>2],
];
// 将数值数据格式化
$list = array_map(function ($item)use($project) {
$item['product'] = $project[$item['product']];
return $item;
}, $list);
print_r($list);
?>
将对象转为数组方法:延伸array_map函数在PHP类中调用内部方法
public static function objectToArray($d) {
if (is_object($d)) {
$d = get_object_vars($d);
}
if (is_array($d)) {
//数组中的每个值都通过当前函数处理(如果是多维数组相当于递归),这里都是原样返回(return $d) return array_map(array(__CLASS__, __FUNCTION__), $d);
} else {
return $d;
}
}
array_map(array(__CLASS__, __FUNCTION__), $d)解释:
我们可以在PHP手册中找到一段用户添加的说明:If you need to call a static method from array_map, this will NOT work:如果你想在array_map函数中回调一个静态方法,那么下面的做法是错误的)
<?php $a = array(1, 2, 3, 4, 5); $b = array_map("myclass::myMethoed", $a); print_r($b); ?>
Instead, you need to do this:
<?php $a = array(1, 2, 3, 4, 5); $b = array_map(array("myclass","myMethoed"), $a); print_r($b); ?>
这里有几点可以参考的:
1,在PHP类中通过array_map函数回调内部方法时,类名称可以使用__CLASS__常量。我们强烈推荐使用此常量,因为不论你类如何修改,这能保证最终结果都是正确的。
2,如果回调的方法是非静态类型,亦可通过$this伪变量指定。
3,在PHP类中的array_map函数总是不能识别self伪变量。
如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术
转载请注明:PHP array_map() 函数 出自老鄢博客 | 欢迎分享