在這介紹一個PHP語言裡比較常用的數組操作函數,array_map函數,當我第一次接觸到這個函數時,對這個函數的強大功能所震懾,也越發感覺PHP語言的好玩之處。
說明
瞭解PHP函數的最好的去處就是PHP手冊,PHP手冊上的關於此函數的說明:
array array_map ( callable $callback , array $arr1 [, array $... ] )
array_map() 返回一個數組,該數組包含了 arr1 中的所有單元經過 callback 作用過之後的單元。callback 接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。就是說將$arr1數組的每個單元的值,通過回呼函數作用後儲存進一個新的數組作為新數組的對應單元的值而還有個厲害的地方是這個函數可以傳入多個數組,也就是在你定義的回呼函數中可以同時對多個數組的每個單元的值同時操作
操作範例
例子1:<?php function cube($n){ return $n*$n;}$num = array(1,2,3,4,5);var_dump(array_map("cube", $num)); 輸出:array(5) { [0]=> int(1) [1]=> int(4) [2]=> int(9) [3]=> int(16) [4]=> int(25) }
例子2(匿名函數也有效):<?php $func = function($n,$m){ return ("這個數組的第 $n 個位置的值是 $m
");};$a = array(1, 2, 3, 4, 5);$b = ['整型:1','整型:2','整型:3','整型:4','整型:5'];var_dump(array_map($func,$a,$b));輸出:array(5) {[0]=> string(55) "這個數組的第 1 個位置的值是 整型:1 "[1]=> string(55) "這個數組的第 2 個位置的值是 整型:2 "[2]=> string(55) "這個數組的第 3 個位置的值是 整型:3 "[3]=> string(55) "這個數組的第 4 個位置的值是 整型:4 "[4]=> string(55) "這個數組的第 5 個位置的值是 整型:5 "}
注意第二個例子中的匿名函數裡的語句必須使用雙引號,因為其中包含$n,$m兩個傳參,而在PHP中,雙引號內的字元會被分析器進行一遍解析,這樣才能將其中的參數代表的值解析出來。
最後是從事資料開發時經常會碰到的問題,本人是在laravel架構下進行PHP開發,在利用其中的資料模型取資料時會出現一種情況,取出的資料是返回的物件類型(ObjClass),此時是無法直接利用鍵取出某一資料的,此時一般採用的方法是利用json_decode()方法,將其參數設為true時可返回數群組類型的資料,但是此時返回的數組則是一個兩層次的數組,就像
$arr = array( 0 => array( 'id' => 11111 ), 1 => array( 'id' => 22222 ), 2 => array( 'id' => 33333 ));
此時可以用foreach取出id,但是也可以用array_map()方法
$id_arr = array_map(function($v) { return $v['id'];}, $arr);輸出:array(3) {[0]=> int(111) [1]=> int(222) [2]=> int(333) }
不過foreach遍曆數組也很快,這兩種方法就是看個人意願了