天天看點

php array_filter array_map,回調函數來處理數組:array_,map(),array_filter(),array_walk()

使用回調來處理數組

1,array_filter($arr,function($value){})将每個值傳入回調,最終結果僅包括傳回true 的元素,傳回數組

2. array_walk($arr, function($value,$key[,$p]){},$p):将每個鍵值傳入回調,傳回布爾值

3. array_map(function(),$arr1[,arr2...]):對1個或多個數組回調處理,傳回索引數組記錄執行結果

array_filter();本意就是數組中那些元素留下哪些元素删除;也可以修改數組中的某個值因為是直接修改原數組的内容是以才 有傳參<?php

$array = ['id'=>1020, 'name'=>'Peter Zhu', 'job'=>'lecture'];

$res=array_filter($array,function($values){

if($values=='Peter Zhu'){

return false;

}

return true;

});

echo '

';print_r($res);      

$res1=array_filter($array,function(&$value){//備注;修改不了值

if($value=='Peter Zhu'){

$value='豬哥';

return true;

}

return true;

});

echo '

';      

print_r($res1);

$arr1=['name'=>'ZhuGe','age'=>'28','sex'=>'woman','job'=>'teacher','salary'=>2000];

//array_walk()本意是在數組中漫步,走一遍,是以可以對每個鍵值對做一些個性化的處理

//周遊數組并加上指定的字尾

echo '

';      

$re=array_walk($arr1,function($value,$key,$connect){

echo  $value.$connect.$key.'

';

},'***');

//array_walk()傳回是布爾值,一定要注意,将輸出結果寫到回調中

//是以,array_walk()也可以完成array_filter()的過濾功能

//例如,過濾掉數組中鍵名為salary的資料,将結果中的鍵值對用=>進行連接配接

echo '

';

$ree=array_walk($arr1,function($value,$key,$connect){

if($key!='salary'){

echo $key.$connect.$value.'

';

}},'=>');

$age=[12,24,56,13,27,17,59];

//單數組:建立年齡數組,對每個值進行判斷是否成年?

$a=array_map(function($value){

if($value<18){

return '未成年';

} return '成年了';

},$age);

echo '

';print_r($age);      

echo '

';print_r($a);      

//雙數組:建立二個數組,一個是當做鍵名,一個當做值,并過濾掉鍵名為sex,age,salary的敏感資料

$key = ['id','name','sex','age','address','salary','job'];

$value = [1020,'Peter Zhu','male',99,'合肥',5000,'講師'];

$res2=array_map(function($key,$value){

if(!in_array($key,['sex','age','salary'])){

return $value;

}},$key,$value);

echo '

';      

print_r(array_values(array_filter($res2)));

$name=['id','name','email'];

$value=[4,'楊過','[email protected]'];

echo '

';      

$res3=array_map(null,$name,$value);

print_r($res3);

//輸出的是一個二維數組

echo '

';      

foreach($res3 as $value){

list($key,$val)=$value;

echo $key,'是',$val,'

';}

?>