array_reduce、array_map

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;
            });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值