有時候需要對array做一點另外的處理,譬如為每一個value做另外的處理:
幫每一個name都加上一個hello,結果會是:
$v就是遍歷$nameAry裏的value,結果都會是:
參考資料:
http://php.net/manual/en/function.array-map.php
$nameAry = ['Hong', 'Peiwen']; $helloNameAry = array(); foreach ($nameAry as $name) { $helloNameAry[] = 'hello, ' . $name; } var_dump($helloNameAry);
幫每一個name都加上一個hello,結果會是:
但這樣一來可讀性很低,而且需要多新增一個$helloNameAry的參數去存result。
這時候array_map就能派上用場了:
function addHello($name) { return 'hello, ' . $name; } $nameAry = ['Hong', 'Peiwen']; $nameAry = array_map('addHello', $nameAry); var_dump($nameAry);
這裏array_map會遍歷所有array的value去跑callback function,這裡的callback function指的是addHello,這樣寫的話,不僅重新parse array value的function可以複用,而且寫起來也比較優雅。
如果不想另外另一個function的話,也可以直接寫在array_map的parameter裡面:
$nameAry = ['Hong', 'Peiwen']; $nameAry = array_map(function ($v) { return 'hello, ' . $v; }, $nameAry); var_dump($nameAry);
參考資料:
http://php.net/manual/en/function.array-map.php
沒有留言:
張貼留言