1. 程式人生 > >php中array_map,array_filter,array_walk區別

php中array_map,array_filter,array_walk區別

在php中array_map,array_filter,array_walk三個函式都是對資料操作的,下面我來介紹這三個函式的用法與區別。

相同點:都是利用回撥函式對陣列中每個元素進行操作。

不同點:

  • 返回值
  • 回撥函式的引數
  • 是否改變陣列的值

array_map 返回的是新陣列,原陣列不變(新陣列和原陣列的陣列長度應該一樣)

array_walk 返回的布林值,如果要改變陣列元素的值,回撥函式第一個引數必須是引用,如  array_walk($array, function(&$v, $k){});  , arrary_walk 的回撥函式還能夠接收陣列的key。

array_filter 返回的是新陣列,原陣列不變。

它的作用是過濾陣列中的元素。回撥函式返回真,元素才能儲存到新陣列中,即(新陣列和原陣列的陣列長度可能不一樣)

array_walk:

array_walk()返回布林值,如果回撥函式需要直接作用於陣列中的值,則給回撥函式的第一個引數指定為引用。這樣任何對這些單元的改變也將會改變原始陣列本身。此函式可以同時獲取到陣列的key和value。

array_map:

array_map() 返回一個數組,該陣列包含了 arr1 中的所有單元經過 callback 作用過之後的單元。callback 接受的引數數目應該和傳遞給 array_map() 函式的陣列數目一致。

簡單點說就是回撥函式對陣列中每個值都會產生最終影響,並在呼叫array_map的返回值中體現。

此函式可以同時對多個數組進行操作。並最終合併為一個數組(每個陣列根據下標平行對其到同一個二維陣列中)。


array_filter:

此函式是專門用於過去陣列中的元素,簡單點說就是對陣列中的經過回撥函式判斷的value進行過濾,並通過array_filter()函式返回處理後的陣列。


因此分析到此我們可以是有on個array_walk和array_map來做陣列的預處理,最常見的是對每個陣列值的trim操作。以下是筆者的示例程式碼:

$tmp = array(' AAAA BBBB CCCC ', 'aaaa bbbb c ', ' dddddd eeeeee');

function array_walk_func(&$v, $k) {
 $v = trim($v);
}
array_walk($tmp, 'array_walk_func');
var_dump($tmp);

function array_map_func($v) {
 return trim($v);
}
$ret = array_map('array_map_func', $tmp);
var_dump($ret);


輸出結果:

array(3) {
  [0] =>
  string(14) "AAAA BBBB CCCC"
  [1] =>
  string(11) "aaaa bbbb c"
  [2] =>
  string(13) "dddddd eeeeee"
}
array(3) {
  [0] =>
  string(14) "AAAA BBBB CCCC"
  [1] =>
  string(11) "aaaa bbbb c"
  [2] =>
  string(13) "dddddd eeeeee"
}

相關推薦

phparray_map,array_filter,array_walk區別

在php中array_map,array_filter,array_walk三個函式都是對資料操作的,下面我來介紹這三個函式的用法與區別。 相同點:都是利用回撥函式對陣列中每個元素進行操作。 不同點: 返回值 回撥函式的引數 是否改變陣列的值 array_map 返

phparray_maparray_walk的使用對比

用戶自定義函數 ret callable int nbsp ron wid 自定義函數 urn 一、array_map() 1、array_map() 函數將用戶自定義函數作用到數組中的每個值上,並返回用戶自定義函數作用後的帶有新值的數組,若函數作用後無返回值,則

PHParray_map與array_column之間的關系分析

取出 += 二維數組 快速實現 true sharp first 情況 重新 array_map()與array_column()用法如下: array_map();將回調函數作用到給定數組的單元上array_column();快速實現:將二維數組轉為一維數組 array_

說一下PHPdie()和exit()區別

選擇 fop class 系統 light 常用 spa ner 終端 PHP手冊:die()Equivalent to exit()。 說明:die()和exit()都是中止腳本執行函數;其實exit和die這兩個名字指向的是同一個函數,die()是exit()函數的別名

PHP./和/的使用區別,相對路徑巢狀包含問題,專案使用絕對路徑

./:表示同級目錄(當前檔案所屬資料夾),每個資料夾下都有“.”檔案,代表當前目錄 ../:表示上級目錄(當前檔案所屬資料夾的上級資料夾),每個資料夾下都有“..”檔案,表示上級目錄 什麼都沒有:就是表示同級目錄。區別./在於./會自動匹配任意目錄下的.資料夾,被其他檔案包含之後會

PHPget和post區別

在這裡為大家整理了兩種get和post的區別。 第一種: GET在瀏覽器回退時是無害的,而POST會再次提交請求。 GET產生的URL地址可以被Bookmark(標記),而POST不可以。  GET請求會被瀏覽器主動cache(儲存),而POST不會,除非手動設定。&nbs

php 關鍵詞final,static的用法 順便也說下php->跟::的區別 做個筆記

一. final 的用法很簡單,定義類的時候 就是阻止子類繼承 貼程式碼 final class base{ public function test(){ echo 'this is final'; } } 任何類都不能繼承base類,如果繼承就會丟擲錯誤 定義方法的

php陣列+和array_merge區別

主要區別在與兩個或多個數組在合併時,出現相同的鍵名時處理方式不一樣 一、當鍵名為數字時,array_merge不會覆蓋原來的值,+會拋棄後面的值<?php /** * Created by P

妙用phparray_filter()獲取資料

這種問題一般我們常見於頁面上既要用到總表,又要用到其中某個使用者單條資料的情況。而常見的兩種解決方法是1.兩次查庫取出總表和符合條件的單條資料;(在資料庫的資料量不多,涉及到的表較少的情況)2.取出總表用php foreach進行迴圈,在迴圈體中判斷資料是否符合

phparray_walk() 和 array_map()兩個函數區別

.html als 就是 gpo map false AR HP www. 兩個函數的共性和區別: 1.傳入這兩個函數的 $value,就是數組中的單一個元素。 2.array_walk() 僅返回true或者false,array_map() 返回處理後的數組; 3.要得

PHP 合並兩個二維數組 array_maparray_walk區別

blog merge 返回 spa ret use walk urn 結果 array_map array_walk 函數介紹 為數組的每個元素應用回調函數 使用用戶自定義函數對數組中的每個元素做回調處理 版本限制 (PHP 4 >= 4.

PHPinclude和require語句的區別

warning mar 處理 生成 區別 war 插入 php 通過 通過 include 或 require 語句,可以將 PHP 文件的內容插入另一個 PHP 文件(在服務器執行它之前)。 include 和 require 語句是相同的,除了錯誤處理方面:

PHP對變量使用單引號和雙引號的區別

輸出 ext tex 執行 class 單引號 如果 -1 雙引號 單引號內部的變量不會執行雙引號會執行如$name = ‘hello‘;echo "the $name";會輸出 the hello而如果是單引號$name = ‘hello‘;echo ‘the $name

PHPthis,self,parent的區別

ted 來講 方便 二次 初始化 sta 繼承類 classname 概念 一、PHP中this,self,parent的區別之一this篇 面向對象編程(OOP,Object OrientedProgramming)現已經成為編程人員的一項基本技能。利用OO

phpsession和cookie的使用及區別

網上商城 標識 禁止 bsp 身份驗證 main str 什麽 ets 1.cookie的使用 什麽是 Cookie? cookie 常用於識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過

PHPempty()和isset()的區別

tom 常量 def -1 最大 解析 如果 sse add 先說一下他們的共同點: 都可以判定一個變量是否為空; 都返回boolean類型,即true或false。 下面具體說一下他們用法之間的區別: isset()用來檢測變量是否設置,只能用於變量,因為

PHP輸出 echo print print_r var_dump的區別與比較

font 區別 多個 常用 括號 dump 類型 打印 ont PHP中輸出 echo print print_r var_dump的區別與比較 echo->是輸出語句,不是函數,沒有返回值,可輸出多個變量值,多個值之間用逗號分隔,不需要圓括號,但不能輸出數組和對

PHP常用的超全局變量 表單get和post提交方式的區別 session與cookie的區別 GD庫是做什麽用的

屬性 過程 生成報表 用戶訪問 服務器 接收 file pla request PHP中常用的超全局變量 $_GET ----->get傳送方式$_POST ----->post傳送方式$_REQUEST ----->可以接收到get和post兩種方式的值

PHPinclude和require的區別詳解

for in repl 這不 語句 沒有 16px targe size something 1、概要    require()語句的性能與include()相類似,都是包括並運行指定文件。不同之處在於:對include()語句來說,在執行文件時每次都要進行讀取和評估;

PHPnew static() 和 new self() 的區別

pub 堆內存 func sel urn ret 通過 ati php self 指的是self所在的類 new static 實例化的是當前使用的類,有點像$this ,從堆內存中提取出來。 還是通過實例說明一下: class A { public static f