array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
$arr = array('2','3','4','5');
$new_arr = array_map('intval' , $arr);//遍历$arr,作用于每个值执行intval [2,3,4,5]
//单数组
function myfunction($v)
{
return($v*$v);
}
$new_arr2 = array_map('myfunction',$arr);//[4,9,16,25]
//多数组形式
function myfunction1($v1,$v2)
{
if ($v1===$v2)
{
return "相同";
}
return "不同";
}
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
array_map("myfunction1",$a1,$a2);//['不同','相同','不同']
array_walk() 不会受到 array内部数组指针的影响。array_walk()会遍历整个数组而不管指针的位置。
用户不应在回调函数中改变该数组本身。例如增加/删除单元,unset 单元等等。如果 array_walk()作用的数组改变了,则此函数的的行为未经定义,且不可预期。注意回调函数接收的前两个参数第一个是值,第二个是键值,如果有第三个参数,则数组所有的值都共用这个参数
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_print($item2, $key)//数组的值、键
{
echo "$key. $item2<br />\n";
}
//用户不应在回调函数中改变该数组本身。例如增加/删除单元,unset 单元等等。如果 array_walk()作用的数组改变了,则此函数的的行为未经定义,且不可预期
array_walk($fruits, 'test_print');
//d. lemon
//a. orange
//b. banana
//c. apple
//传引用,改变了所传参数组
function test_alter(&$item1, $key, $prefix)//数组的值、键、额外参数'fruit'
{
$item1 = "$prefix: $item1";
}
//带额外参数
array_walk($fruits, 'test_alter', 'fruit');
array_walk($fruits, 'test_print');
//d. fruit: lemon
//a. fruit: orange
//b. fruit: banana
//c. fruit: apple
array_filter返回的是一个数组,依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变
$arr=array(1,2,3,4,5,6);
function filter($var){
if($var%2==0)
return true;
}
$data=array_filter($arr,"filter");//true则保留键值 [2,4,6]
array_reduce() 函数向用户自定义函数发送数组中的值,并返回一个字符串。
$arr = array('1','2','3'); //计算数组中数字的和
$sum = 0;
foreach($arr as $v){ //使用 foreach循环计算
$sum += $v;// echo $sum
}
//$result为前一次的$v
$str = array_reduce($arr , function($result , $v){ //使用array_reduce()迭代求和 6
return $result+$v;
});