?嚳矗?憧梢醞?鄙?韃⑻畛涫?欏H綣?閼?詿?硎?炙饕??椋?憧贍芟朧褂孟允久??暮??爸煤妥芳釉?兀?鏰rray_push()和array_unshift()函數(shù),但這些函數(shù)不能操作關(guān)聯(lián)數(shù)組。 2、刪除數(shù)組元素 如果要從數(shù)組中刪除一個元素,請使用unset()函數(shù), 使用數(shù)字索引數(shù)組時,刪除數(shù)組元素的辦法更多,更靈活,可以使用array_shift()和array_pop()函數(shù)分別從數(shù)組的開頭和末尾刪除一個元素。 3、交換鍵和值 假設(shè)你想創(chuàng)建一個名叫$states的新數(shù)組,使用州府作為索引,使用州名作為關(guān)聯(lián)值,使用array_flip()函數(shù)很容易完成這個任務(wù)。 4、合并數(shù)組 假設(shè)前面的數(shù)組由一個基于Web的“FlashCard”服務(wù)使用,你想提供一種方法測試學(xué)生對美國各州首府的掌握情況,你可以使用array_merge()函數(shù)合并包含州和首府的數(shù)組。 5、編輯數(shù)組值 假設(shè)在數(shù)組中的數(shù)據(jù)包含大小寫錯誤,在插入到數(shù)據(jù)庫之前,你想糾正這些錯誤,你可以使用array_map()函數(shù)給每個數(shù)組元素應(yīng)用一個回調(diào)。 6、按鍵對數(shù)組排序 FlashCard程序常常使用各種排序,如按字母順序排序,你可以使用ksort()函數(shù)按鍵對關(guān)聯(lián)數(shù)組進行排序。因為數(shù)組是通過參數(shù)傳遞給ksort()函數(shù)的,意味著你不再需要將排序結(jié)果分配給另一個變量。 7、隨機數(shù)組排序 在FlashCard程序中還涉及到另一種隨機排序技術(shù),這時你要使用shuffle()函數(shù)實現(xiàn)數(shù)組項目的隨機排序。如果不需要打亂數(shù)組順序,你只是想隨機選擇一個值,那么使用array_rand()函數(shù)即可。 8、確定鍵和值是否存在 你可以使用in_array()函數(shù)確定一個數(shù)組元素是否存在。 9、搜索數(shù)組 你可能想搜索數(shù)組資源,這樣用戶就可以方便地用一個特定的州府檢索關(guān)聯(lián)的州,可以通過array_search()函數(shù)實現(xiàn)數(shù)組搜索。 10、標(biāo)準PHP庫 標(biāo)準PHP庫(Standard PHP Library,SPL)為開發(fā)人員提供了許多數(shù)據(jù)結(jié)構(gòu),迭代器,接口,異常和其它以前PHP語言沒有的功能,使用這些功能可以通過面向?qū)ο蟮恼Z法遍歷數(shù)組。
我們提供的服務(wù)有:成都網(wǎng)站制作、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、衡陽縣ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的衡陽縣網(wǎng)站制作公司
給你個思路,你結(jié)合具體項目改進吧,如下:
?php
/**
*?@author:?suifengtec??coolwp.com
*?@date:???2015-05-03?00:59:15
*?@last?Modified?by:???suifengtec??coolwp.com
*?@last?Modified?time:?2015-05-04?01:16:09
*/
function?coolwp_routes_to_array($_routes){
$routes?=?array();
foreach($_routes?as?$key=$val){
if(is_array($val)){
$routes[$key]?=?$val;
}else{
$routes[$key]?=?$val;
}
}
return?$routes;??
}
function?coolwp_get_route_from_array(array?$array,?$path,?$default?=?null){
$delimiter?=?'/';
if?(empty($path))?
throw?new?Exception('路徑為空?');
$path?=?trim($path,?$delimiter);
$value?=?$array;
$parts?=?explode($delimiter,?$path);
foreach?($parts?as?$part)?{
if?(isset($value[$part]))?{
$value?=?$value[$part];
}?else?{
return?$default;
}
}
return?$value;
}
/*你的json*/
$string?=?file_get_contents("test.json");
$_routes?=?new?RecursiveIteratorIterator(
new?RecursiveArrayIterator(json_decode($string,?TRUE)),
RecursiveIteratorIterator::SELF_FIRST
);
/*==========以下為測試內(nèi)容============*/
/*
轉(zhuǎn)換為數(shù)組
*/
$routes?=?coolwp_routes_to_array($_routes);
/*
獲取具體的路由的值
*/
/*$movie_route?=?coolwp_get_route_from_array($routes?,'account/loginIndex.htm/movie');
//輸出為:?電影
echo?$movie_route;
*/
print_r($routes);
祝愉快!
PHP 有很多非常好用的數(shù)組處理函數(shù),PHP 數(shù)組函數(shù)官方文檔都有 80 多個,但是在使用過程,有一些數(shù)組的操作使用比較多,我就把這些函數(shù)整理成工具函數(shù),然后整合到 WPJAM Basic 中,方便自己的二次開放時候使用,現(xiàn)在整理放出來,如果你和我一樣基于 WPJAM Basic 進行二次開發(fā),也可以使用:
PHP 從關(guān)聯(lián)數(shù)組中移除指定的鍵值對,一般使用 unset 函數(shù),比如:
如果要移除多個鍵值對,就要調(diào)用多次的 unset 函數(shù),所以就合并成一個函數(shù) :
這樣就可以通過下面方式移除鍵值對了:
如果僅僅移除一個鍵值對,還可以直接傳遞字符串:
我們使用 array_filter 對數(shù)組進行過濾的時候,是不會遞歸調(diào)用的,意思如果其中元素也是數(shù)組的時候,是不會進行同樣的過濾的操作。
輸出結(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ù)進行合并的話,不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸合并成一個數(shù)組。
輸出結(jié)果:
其實我們希望子數(shù)組里面的相同的值覆蓋,據(jù)此我們寫了一個函數(shù),用來深度合并多維數(shù)組:
相同的數(shù)組進行合并:
得到的結(jié)果是:
一般不推薦使用 wpjam_array_merge 對多維索引數(shù)組進行合并。
要從關(guān)聯(lián)數(shù)組中移除并返回指定的鍵值,一般需要兩步操作,先取出,然后 unset 數(shù)組中的鍵值對:
如果每次都這么操作,有點煩人,所以就把這兩個步驟合成一個函數(shù),并且還可以設(shè)置數(shù)組中無此鍵對應(yīng)的元素的時候的默認值。
然后直接調(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)題'] :