6.5.7 PHP使用回調(diào)函數(shù)處理數(shù)組的函數(shù)array_walk()
使用回調(diào)函數(shù)處理數(shù)組的函數(shù)
?array_filter -- 用回調(diào)函數(shù)過濾數(shù)組中的單元
–語(yǔ)法:rray array_filter ( array input [, callback callback] )
–依次將 input數(shù)組中的每個(gè)值傳遞到 callback函數(shù)鳞绕。如果 callback函數(shù)返回 TRUE剩瓶,則 input數(shù)組的當(dāng)前值會(huì)被包含在返回的結(jié)果數(shù)組中伏恐。數(shù)組的鍵名保留不變扑媚。
–如果沒有提供 callback函數(shù)曾我,array_filter() 將刪除 input中所有等值為 FALSE 的條目勤家。
array_walk--對(duì)數(shù)組中的每個(gè)成員應(yīng)用用戶函數(shù)
語(yǔ)法:bool array_walk ( array &array, callback funcname [, mixed userdata] )
如果成功則返回 TRUE圾浅,失敗則返回 FALSE掠手。
將用戶自定義函數(shù) funcname 應(yīng)用到 array 數(shù)組中的每個(gè)單元。典型情況下 funcname 接受兩個(gè)參數(shù)狸捕。array 參數(shù)的值作為第一個(gè)喷鸽,鍵名作為第二個(gè)。如果提供了可選參數(shù) userdata灸拍,將被作為第三個(gè)參數(shù)傳遞給 callback funcname做祝。
array_walk() 不會(huì)受到 array 內(nèi)部數(shù)組指針的影響。array_walk() 會(huì)遍歷整個(gè)數(shù)組而不管指針的位置鸡岗。
array_map -- 將回調(diào)函數(shù)作用到給定數(shù)組的單元上
語(yǔ)法: array array_map ( callback callback, array arr1 [, array ...] )
array_map() 返回一個(gè)數(shù)組混槐,該數(shù)組包含了 arr1 中的所有單元經(jīng)過 callback 作用過之后的單元。callback 接受的參數(shù)數(shù)目應(yīng)該和傳遞給 array_map() 函數(shù)的數(shù)組數(shù)目一致轩性。
例 1.php
<?php
$arr = array(1,2,3,4,5);
function myfun(&$value) {
$value = $value*$value;
}
print_r($arr);
echo '<br>';
array_walk($arr, "myfun");
print_r($arr);
echo '<br>';
例2.php
<?php
$arr = array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);
function myfun($value, $key) {
echo "{$key} ============ > {$value} <br>";
}
print_r($arr);
echo '<br>';
array_walk($arr, "myfun");
array_walk($arr, function(&$value, $key){
$value="{$key} ----------> {$value}<br>";
});
print_r($arr);
echo '<br>';
例3.php
<?php
$arr = array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);
print_r($arr);
echo '<br>';
array_walk($arr, function($value, $key, $str){
echo "{$key} {$str} {$value}<br>";
}, "###############");
print_r($arr);
echo '<br>';
例test.php
<?php
$arr = array("one"=>1,"two"=>2,"three"=>3,"four"=>4,"five"=>5);
print_r($arr);
echo '<br>';
@array_walk($arr, function($value, $key){
echo "{$key} {$str} {$value}<br>";
}, "###############");
print_r($arr);
echo '<br>';