PHP常用数组

一. array_map

/**
 * array_map函数势必比array_walk要更常用,
 * 因为php内置函数默认就是传的值而不是引用,
 * 那么你使用内置函数如:intval() strtolower()的时候walk就无能为力了.
 * array_map 用回调函数处理数组中的各个元素,
 * 在函数中你可以改变各个元素的值,
 * 重点在你需要什么样的值就返回什么样的值,保持索引。
 * 可以一次性处理多个数组。但是数组的数量应该与回调函数的参数保持一致
 */
$arr = array(
	[
		'name' => '张三丰',
		'age' => '25',
		'sex' => '男',
	],
	[
		'name' => '孙二娘',
		'age' => '22',
		'sex' => '女',
	],
);
$arr1 = array_map(function($val){
	$value = $val;
	$value['country'] = 'china';
	return $value;
}, $arr);
print_r($arr1);

二. array_walk

/**
* 如果处理的数组不是二维,可以用array_map进行取代
* 处理二维数组用array_walk_recursive函数,
* 在处理一维数组时,array_walk函数因为是传引用,处理大数组时效率或许会比array_map高
* array_walk用回调函数处理数组中的各个元素,
* 此函数返回bool.所以需要配合引用传值直接改变原数组才有一定的功效。
*/
$arr = array(
	[
		'name' => '张三丰',
		'age' => '25',
		'sex' => '男',
	],
	[
		'name' => '孙二娘',
		'age' => '22',
		'sex' => '女',
	],
);
array_walk($arr, function(&$val, $key){
	$val['country'] = strtoupper('china');
});
print_r($arr);

三. array_filter

/**
* array_filter 用回调函数处理数组中的各个元素,
* 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,
* 如果返回了false,那么这个元素将会被过滤掉
* 保持了原来的索引
* 注:空、false、0 都会被过滤
*/
$arr = [
	'name' => '张三丰',
	'age' => false,
	'sex' => 0,
	'country' => '',
];
$arr1 = array_filter($arr);
print_r($arr1);

四. array_reduce

/**
* array_reduce($arr,callable $callback)使用回调函数迭代地将数组简化为单一的值
* 其中$arr为输入数组,$callback($result,$value)接受两个参数,$result为上一次迭代产生的值,$value是当前迭代的值
* 使用array_reduce替代foreach循环最常用的一个业务场景也许就是数组求和或字符串拼接
*/
$arr = array(
  array("id"=>1,'name'=>"a"),
  array("id"=>2,"name"=>"c"),
  array("id"=>3,"name"=>"d")
);
echo array_reduce($arr , function($result , $v){
    Return $result.','.$v['id'];
});

五. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值