array_filter、array_walk、array_map的区别

平时经常遇到这三个函数,每次遇到就查资料,用的时候又忘记了,今天绝对把它写下来供下次翻阅。

首先看一下这三个函数的文档

array array_filter ( array $input [, callback $callback ] )、
array array_map ( callback $callback , array $arr1 [, array $... ] )
 
  1. bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )

  2.  


 

array_filter返回的是一个数组,依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变

 
  1. <?php

  2. $arr=array(

  3. 1,2,3,4,5,6

  4. );

  5. function filter($var){

  6. if($var%2==0)

  7. return true;

  8. }

  9. $data=array_filter($arr,"filter");

  10. $data=array(2,4,6);

  11. ?>


array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

 
  1. <?php

  2. $arr1=array('linux','Php','JAVA');

  3. array_map('strtoupper',$arr1);

  4. ?>


 

array_walk() 不会受到 array内部数组指针的影响。array_walk()会遍历整个数组而不管指针的位置。

用户不应在回调函数中改变该数组本身。例如增加/删除单元,unset 单元等等。如果 array_walk()作用的数组改变了,则此函数的的行为未经定义,且不可预期。注意回调函数接收的前两个参数第一个是值,第二个是键值,如果有第三个参数,则数组所有的值都共用这个参数

 
  1. <?php?

  2. function exchange($val,$key)

  3. {

  4. echo $val;

  5. echo $key;

  6.  
  7. }

  8. $arr2=array('a'=>'linux','b'=>'php','c'=>'java','d'=>'mysql');

  9. array_walk($arr2,'exchange');

  10. >



--------------------- 本文来自 csdnzhangyiwei 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/csdnzhangyiwei/article/details/60761512?utm_source=copy

猜你喜欢

转载自blog.csdn.net/bujidexinq/article/details/82881548