25、PHP数组函数(array_map、array_walk、array_walk_recursive)

阅读() @2018-10-29 18:16:06

1、array_map():对数组中的每一个元素都执行一个回调函数,并返回一个执行后的新的数组:

$arry = array('<h1>hello world</h1>','style="margin-left:10px"');
function fn($v){
	return htmlspecialchars($v);
}
$newarry = array_map('fn',$arry);
echo '<pre>';
print_r($newarry);

2、array_walk():对数组中的每一个元素都执行一个回调函数,成功返回true,失败返回false:

$arry = array('a'=>900,'b'=>1500,'c'=>5263,'d'=>6352);
function fn(&$v){
	if($v<1000){
		$v+=500;
	}
}
if(array_walk($arry,fn)){
	echo '<pre>';
	print_r($arry);
}

array_map()和array_walk()的区别:

array_map()对数组的每个元素执行回调函数,回调函数必须用return返回。

array_walk()对数组的每个元素执行回调函数,返回值是true,对原数组没有直接影响。例如下面的代码,如果在回调函数内不加&引用地址,则输出值还是原数组。

$arry = array(1,2,3,4,'桃子');
function fn($v){
	if($v<5){
		$v+=1;
	}
}
array_walk($arry,'fn');
print_r($arry);

3、array_walk_recursive():递归的操作数组,使多维数组中的元素应用回调函数:

$arry = array(
	array('uname'=>'张三','money'=>100),
	array('uname'=>'李四','money'=>200),
	array('uname'=>'王五','money'=>300),
	array('uname'=>'赵六','money'=>400)
);
function fn(&$v,$k){
	if($k=='money'&&$v<300){
		$v+=1000;
	}
}
if(array_walk_recursive($arry,fn)){
	echo '<pre>';
	print_r($arry);
}

4、数组的两种遍历方式:

$arry = array('seo','web','php',100,200,300,1.22);
$num = count($arry);
for($a=0; $a<$num; $a++){
	if(gettype($arry[$a])==integer){
		echo $arry[$a].'<br/>';
	}
}
echo '<br/>';
foreach($arry as $k){
	if(gettype($k)==integer||gettype($k)==double){
		echo $k.'<br/>';
	}
}

继续更新中!

微信二维码
锐壳主机