array_walk相當(dāng)于foreach:
$arr = ['Client'=>'jQuery','Server'=>'PHP']; array_walk($arr, function($v, $k) { echo "鍵:$k 值:$v\n"; });
比如去除數(shù)組$arr元素的前后空白:
array_walk($arr, function(&$v) { $v = trim($v); });foreach($arr as &$v) { $v = trim($v); } array_filter: 用回調(diào)函數(shù)過濾數(shù)組中的單元,返回過濾后的數(shù)組 var_export( array_filter([1, 2, 3], function($v) { return $v > 1; }) ); 和foreach([1, 2, 3] as $k => $v) { if($v > 1) { $tmp[$k] = $v; } } var_export($tmp); 都輸出:array ( 1 => 2, 2 => 3, )
PHP數(shù)組映射化簡(MapReduce):
array_map/array_reduce array_map: 將回調(diào)函數(shù)作用到給定數(shù)組的單元上 var_export( array_map(function ($v) { return $v * $v; }, [1, 2, 3]) ); 和 foreach([1, 2, 3] as $v) { $tmp[] = $v * $v; } var_export($tmp); 都輸出: array ( 0 => 1, 1 => 4, 2 => 9, )
array_reduce: 用回調(diào)函數(shù)迭代地將數(shù)組簡化(reduce)為單一的值//輸出16,即10+1+2+3,其中10作為初始值.
echo array_reduce([1, 2, 3], function($result, $item) { $result = $result + $item; return $result; }, 10); 用foreach表達: $result = 10; foreach([1, 2, 3] as $v) { $result = $result + $v; } echo $result;
執(zhí)行效果都一樣,但是具體的用函數(shù)快還是用foreach快些啊
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...