array_filter : 過濾數(shù)組中的無效元素,可以使用回調(diào)函數(shù)過濾
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、紫陽網(wǎng)站維護(hù)、網(wǎng)站推廣。
array_map : 使用回調(diào)函數(shù)依次處理所有元素
implode: 將一維數(shù)組轉(zhuǎn)為特定符號隔開的字符串,
explode:? 將特定符號隔開的字符串轉(zhuǎn)為一維數(shù)組
sort /ksort: 將數(shù)組進(jìn)行升序排序
array_unique: 將數(shù)組元素去重
array_values:? 取數(shù)組的值,重新組成新數(shù)組
array_pop: 取數(shù)組末尾元素并刪除(隊列)
array_push:將一個元素插入數(shù)組末尾(隊列)
array_sum:統(tǒng)計數(shù)組元素的和
array_column:將二維數(shù)組中的指定KEY取出組成一個一維數(shù)組
網(wǎng)頁鏈接
PHP 有很多非常好用的數(shù)組處理函數(shù),PHP 數(shù)組函數(shù)官方文檔都有 80 多個,但是在使用過程,有一些數(shù)組的操作使用比較多,我就把這些函數(shù)整理成工具函數(shù),然后整合到 WPJAM Basic 中,方便自己的二次開放時候使用,現(xiàn)在整理放出來,如果你和我一樣基于 WPJAM Basic 進(jìn)行二次開發(fā),也可以使用:
PHP 從關(guān)聯(lián)數(shù)組中移除指定的鍵值對,一般使用 unset 函數(shù),比如:
如果要移除多個鍵值對,就要調(diào)用多次的 unset 函數(shù),所以就合并成一個函數(shù) :
這樣就可以通過下面方式移除鍵值對了:
如果僅僅移除一個鍵值對,還可以直接傳遞字符串:
我們使用 array_filter 對數(shù)組進(jìn)行過濾的時候,是不會遞歸調(diào)用的,意思如果其中元素也是數(shù)組的時候,是不會進(jìn)行同樣的過濾的操作。
輸出結(jié)果為:
但是我們在一些數(shù)據(jù)處理的時候,比如后臺字段提交的時候,我們希望過濾掉 null 的值,如果元素也是一個關(guān)聯(lián)數(shù)組的時候,我們希望關(guān)聯(lián)數(shù)組元素中的 null 的值也會過濾掉。所以我們就寫了 wpjam_array_filter 這個函數(shù),實現(xiàn) array_filter 遞歸調(diào)用:
同樣的數(shù)組:
輸出結(jié)果為:
PHP 的 array_filter() 函數(shù)讓我們可以通過回調(diào)函數(shù)來過濾數(shù)組,但是返回的是過濾后的數(shù)組,但是很多時候,我們只是簡單的要求 返回過濾之后數(shù)組的第一個元素 :
使用非常簡單的:
如果我們要合并的數(shù)組是多維的關(guān)聯(lián)數(shù)組,那么使用 array_merge_recursive() 函數(shù)進(jìn)行合并的話,不會進(jìn)行鍵名覆蓋,而是將多個相同鍵名的值遞歸合并成一個數(shù)組。
輸出結(jié)果:
其實我們希望子數(shù)組里面的相同的值覆蓋,據(jù)此我們寫了一個函數(shù),用來深度合并多維數(shù)組:
相同的數(shù)組進(jìn)行合并:
得到的結(jié)果是:
一般不推薦使用 wpjam_array_merge 對多維索引數(shù)組進(jìn)行合并。
要從關(guān)聯(lián)數(shù)組中移除并返回指定的鍵值,一般需要兩步操作,先取出,然后 unset 數(shù)組中的鍵值對:
如果每次都這么操作,有點(diǎn)煩人,所以就把這兩個步驟合成一個函數(shù),并且還可以設(shè)置數(shù)組中無此鍵對應(yīng)的元素的時候的默認(rèn)值。
然后直接調(diào)用即可:
PHP 關(guān)聯(lián)數(shù)組可以通過三種方式插入新元素:
由此可見,關(guān)聯(lián)數(shù)組插入元素是無法指定位置的,只能插在最前或者最后面,所以這個函數(shù)就是實現(xiàn) 向關(guān)聯(lián)數(shù)組插入 元素時候指定的 Key 之前 :
比如下面在 $columns 的 'author' 之前插入 ['page_title'='頁面標(biāo)題'] :
一、數(shù)組操作的基本函數(shù)
數(shù)組的鍵名和值
array_values($arr); 獲得數(shù)組的值
array_keys($arr); 獲得數(shù)組的鍵名
array_flip($arr); 數(shù)組中的值與鍵名互換(如果有重復(fù)前面的會被后面的覆蓋)
in_array("apple",$arr); 在數(shù)組中檢索apple
array_search("apple",$arr); 在數(shù)組中檢索apple ,如果存在返回鍵名
array_key_exists("apple",$arr); 檢索給定的鍵名是否存在數(shù)組中
isset($arr[apple]): 檢索給定的鍵名是否存在數(shù)組中
數(shù)組的內(nèi)部指針
current($arr); 返回數(shù)組中的當(dāng)前單元
pos($arr); 返回數(shù)組中的當(dāng)前單元
key($arr); 返回數(shù)組中當(dāng)前單元的鍵名
prev($arr); 將數(shù)組中的內(nèi)部指針倒回一位
next($arr); 將數(shù)組中的內(nèi)部指針向前移動一位
end($arr); 將數(shù)組中的內(nèi)部指針指向最后一個單元
reset($arr; 將數(shù)組中的內(nèi)部指針指向第一個單元
each($arr); 將返回數(shù)組當(dāng)前元素的一個鍵名/值的構(gòu)造數(shù)組,并使數(shù)組指針向前移動一位
list($key,$value)=each($arr); 獲得數(shù)組當(dāng)前元素的鍵名和值
數(shù)組和變量之間的轉(zhuǎn)換
extract($arr);用于把數(shù)組中的元素轉(zhuǎn)換成變量導(dǎo)入到當(dāng)前文件中,鍵名當(dāng)作變量名,值作為變量值
注:(第二個參數(shù)很重要,可以看手冊使用)使用方法 echo $a;
compact(var1,var2,var3);用給定的變量名創(chuàng)建一個數(shù)組
二、數(shù)組的分段和填充
數(shù)組的分段
array_slice($arr,0,3); 可以將數(shù)組中的一段取出,此函數(shù)忽略鍵名
array_splice($arr,0,3,array("black","maroon")); 可以將數(shù)組中的一段取出,與上個函數(shù)不同在于返回的序列從原數(shù)組中刪除
分割多個數(shù)組
array_chunk($arr,3,TRUE); 可以將一個數(shù)組分割成多個,TRUE為保留原數(shù)組的鍵名
數(shù)組的填充
array_pad($arr,5,'x'); 將一個數(shù)組填補(bǔ)到制定長度
三、數(shù)組與棧
array_push($arr,"apple","pear"); 將一個或多個元素壓入數(shù)組棧的末尾(入棧),返回入棧元素的個數(shù)
array_pop($arr); 將數(shù)組棧的最后一個元素彈出(出棧)
四、數(shù)組與列隊
array_shift($arr);數(shù)組中的第一個元素移出并作為結(jié)果返回(數(shù)組長度減1,其他元素向前移動一位,數(shù)字鍵名改為從零技術(shù),文字鍵名不變)
array_unshift($arr,"a",array(1,2));在數(shù)組的開頭插入一個或多個元素
五、回調(diào)函數(shù)
array_walk($arr,'function','words'); 使用用戶函數(shù)對數(shù)組中的每個成員進(jìn)行處理(第三個參數(shù)傳遞給回調(diào)函數(shù)function)
array_mpa("function",$arr1,$arr2); 可以處理多個數(shù)組(當(dāng)使用兩個或更多數(shù)組時,他們的長度應(yīng)該相同)
array_filter($arr,"function"); 使用回調(diào)函數(shù)過濾數(shù)組中的每個元素,如果回調(diào)函數(shù)為TRUE,數(shù)組的當(dāng)前元素會被包含在返回的結(jié)果數(shù)組中,數(shù)組的鍵名保留不變
array_reduce($arr,"function","*"); 轉(zhuǎn)化為單值函數(shù)(*為數(shù)組的第一個值)
六、數(shù)組的排序
通過元素值對數(shù)組排序
sort($arr); 由小到大的順序排序(第二個參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
rsort($arr); 由大到小的順序排序(第二個參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
usort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)忽略鍵名的數(shù)組排序
asort($arr); 由小到大的順序排序(第二個參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
arsort($arr); 由大到小的順序排序(第二個參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
uasort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)保留鍵名的數(shù)組排序
通過鍵名對數(shù)組排序
ksort($arr); 按照鍵名正序排序
krsort($arr); 按照鍵名逆序排序
uksort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的鍵名進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)
自然排序法排序
natsort($arr); 自然排序(忽略鍵名)
natcasesort($arr); 自然排序(忽略大小寫,忽略鍵名)
七、數(shù)組的計算
數(shù)組元素的求和
array_sum($arr); 對數(shù)組內(nèi)部的所有元素做求和運(yùn)算
數(shù)組的合并
array_merge($arr1,$arr2); 合并兩個或多個數(shù)組(相同的字符串鍵名,后面的覆蓋前面的,相同的數(shù)字鍵名,后面的不會做覆蓋操作,而是附加到后面)
“+”$arr1+$arr2; 對于相同的鍵名只保留后一個
array_merge_recursive($arr1,$arr2); 遞歸合并操作,如果數(shù)組中有相同的字符串鍵名,這些值將被合并到一個數(shù)組中去。如果一個值本身是一個數(shù)組,將按照相應(yīng)的鍵名把它合并為另一個數(shù)組。當(dāng)數(shù)組 具有相同的數(shù)組鍵名時,后一個值將不會覆蓋原來的值,而是附加到后面
數(shù)組的差集
array_diff($arr1,$arr2); 返回差集結(jié)果數(shù)組
array_diff_assoc($arr1,$arr2,$arr3); 返回差集結(jié)果數(shù)組,鍵名也做比較
數(shù)組的交集
array_intersect($arr1,$arr2); 返回交集結(jié)果數(shù)組
array_intersect_assoc($arr1,$arr2); 返回交集結(jié)果數(shù)組,鍵名也做比較
八、其他的數(shù)組函數(shù)
range(0,12); 創(chuàng)建一個包含指定范圍單元的數(shù)組
array_unique($arr); 移除數(shù)組中重復(fù)的值,新的數(shù)組中會保留原始的鍵名
array_reverse($arr,TRUE); 返回一個單元順序與原數(shù)組相反的數(shù)組,如果第二個參數(shù)為TRUE保留原來的鍵名
//srand((float)microtime()*10000000); 隨機(jī)種子觸發(fā)器
array_rand($arr,2); 從數(shù)組中隨機(jī)取出一個或 多個元素
shuffle($arr); 將數(shù)組的順序打亂
求課吧有很多關(guān)于PHP編程方面的教程
常用函數(shù)比較多
如:字符串處理函數(shù),數(shù)組函數(shù),日期函數(shù),MySQL函數(shù),文件系統(tǒng)函數(shù),GD函數(shù)庫等
本文實例講述了php常用字符串處理函數(shù)。分享給大家供大家參考。具體分析如下:
這里只提供幾個簡單常用的函數(shù):
chop執(zhí)行去除空格處理,get_html_translation_table返回轉(zhuǎn)化列表到變量,定義包括HTML編碼的字符串htmlentities,htmlspecialchars_decode
定義包含HTML特殊字符的字符串,nl2br
quotemeta
rtrim等.
定義和用法:chop()
函數(shù)從字符串的末端開始刪除空白字符或其他預(yù)定義字符,該函數(shù)的
rtrim()
函數(shù)的別名.
語法:chop(string,charlist),代碼如下:
復(fù)制代碼
代碼如下:$str="i'm
a
teacher
";
//定義字符串
$result=chop($str);
//執(zhí)行去除空格處理
echo
$result;
//輸出結(jié)果
定義和用法:get_html_translation_table()
函數(shù)返回被
htmlentities()
和
htmlspecialchars()
函數(shù)使用的翻譯表.
語法:get_html_translation_table(function,quotestyle),代碼如下:
復(fù)制代碼
代碼如下:
$trans=get_html_translation_table(html_entities);
//返回轉(zhuǎn)化列表到變量
print_r($trans);
//輸出轉(zhuǎn)換表
$str="hallo
frau
krmer";
//定義字符串
$encoded=strtr($str,$trans);
//查找字符
echo
$encoded;
//輸出結(jié)果
//
$str="a
'quote'
is
bbold/b";
//定義包括html編碼的字符串
echo
htmlentities($str);
//輸出經(jīng)過處理的字符串
echo
htmlentities($str,
ent_quotes);
//加上可選參數(shù)后的輸出結(jié)果
//
$str='pthis
-
"/p';
//定義包含html特殊字符的字符串
echo
htmlspecialchars_decode($str);
//輸出轉(zhuǎn)換后的內(nèi)容
echo
"br";
echo
htmlspecialchars_decode($str,ent_noquotes);
//不對引號進(jìn)行編碼的輸出結(jié)果
//
$str="cat
isn't
n
dog";
//定義包含換行符的字符串
$result=nl2br($str);
//執(zhí)行轉(zhuǎn)換操作
echo
$result;
//輸出轉(zhuǎn)換后的結(jié)果
//
$str="hello
world.(can
you
hear
me?)";
//定義包含元字符的字符串
$result=quotemeta($str);
//執(zhí)行轉(zhuǎn)換操作
echo
$result;
//輸出轉(zhuǎn)換后的結(jié)果
//
$str="hello
world
";
//定義末尾有空格的字符串
$result=rtrim($str);
//執(zhí)行轉(zhuǎn)換操作
echo
$result;
//輸出轉(zhuǎn)換后的結(jié)果
希望本文所述對大家的php程序設(shè)計有所幫助。
標(biāo)題名稱:php常用數(shù)據(jù)處理函數(shù) php語法和常用的函數(shù)
文章分享:http://m.kartarina.com/article2/hgpooc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、電子商務(wù)、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)