您的位置 首页 php

每天一个常用PHP函数-array_walk、array_map

场景

永远不能相信用户的输入,那么对api中的参数进行统一过滤,就需要去遍历数组?

语法

 array_map ( callable $callback , array $array1 [, array $... ] ) : array
数组中的元素作为参数,执行callback,返回值是新数组
$callback($element) 


array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool
数组中的元素作为参数,执行callback, 这里是引用传值,会直接修改原数组
$callback(&$value, $key), 数组的元素值与key
  

使用

 $params = [
    'name' => '愤怒的鸟',
    'password' => 'abcd99>',
];

print_r($params);

print_r(array_map(function($value){
    return trim($value, '>');
}, $params));

/**
Array
(
    [name] => 愤怒的鸟
    [password] => abcd99>
)
Array
(
    [name] => 愤怒的鸟
    [password] => abcd99
)

**/  

再比如api参数格式不统一如何处理?下划线转驼峰

 
$params = [
    'name' => '愤怒的鸟',
    'totalAmount' => 100,
    'remain_amount' => 8
];

$paramsToCamelbak = function($key){
    $keyTmp = ucwords(str_replace(['_'], ' ', $key));
    return lcfirst(str_replace(' ', '', $keyTmp));
};

$newKeys = array_map($paramsToCamelbak, array_keys($params));
$values = array_values($params);

// 合并数组
print_r(array_combine($newKeys, $values));

/**
Array
(
    [name] => 愤怒的鸟
    [totalAmount] => 100
    [remainAmount] => 8
)


**/  

再想如果参数中的url有的带有http协议有的没有,那在入库前可以做一次统一处理

 $params = [
    'name' => '愤怒的鸟',
    'avatar' => 'www.laiyige.com',
    'face_url' => '#39;,
    'gender' => 'man'
];

print_r($params);


array_walk($params, function(&$value, $key){
    if (in_array($key, ['avatar', 'face_url'])) {
        $value = '#39;. ltrim($value, '#39;);
    }
});

print_r($params);



/**
Array
(
    [name] => 愤怒的鸟
    [avatar] => www.laiyige.com
    [face_url] => 
    [gender] => man
)
Array
(
    [name] => 愤怒的鸟
    [avatar] => 
    [face_url] => 
    [gender] => man
)


**/  

文章来源:智云一二三科技

文章标题:每天一个常用PHP函数-array_walk、array_map

文章地址:https://www.zhihuclub.com/79030.shtml

关于作者: 智云科技

热门文章

评论已关闭

1条评论

  1. Hi there! This post could not be written much better! Going
    through this article reminds me of my previous roommate!
    He constantly kept talking about this. I’ll send this post to him.
    Fairly certain he will have a good read. Thanks for sharing!

网站地图