1.request_uri獲取到最後的元素index\test1\test2\test3(通常框架的的路由路徑就是這樣的)
php
$request_uri ="index\\test1\\test2\\test3"; $arr=explode("\\",$request_uri); $moudle = array_shift($arr); $control = array_shift($arr); $action = array_shift($arr); $parms= array_shift($arr);
這樣減小了咱們常見的一種比較死板的寫法,$control = $arr[1]
這種寫法
2.咱們獲取到了某個讀取框架內的某個路徑控制器的某個行爲還有參數,咱們不但願外部看到咱們內部的文件和控制器路徑,對每一個路徑進行轉換處理,咱們但願對外輸出的路由是友好的
數組
$changeMoudle ="Change".array_shift($arr); $changeController = "Change".array_shift($arr); //而後咱們讓其組合到返回的url裏面去 array_unshift($arr,$changeController); array_unshift($arr,$changeMoudle); implode($arr,"//");
3.數組合並的方法array_merge 合併加強的方法
array_merge_recursive($arr1,$arr2)遞歸合併 通常在數組配置的時候,咱們會用另一種方法
下面給出一個經常使用的配置邏輯方法:(用後來的配置覆蓋掉前面的配置)
框架
function arrayRecusive($arr1,$arr2) { if(is_array($arr2)) { foreach($arr2 as $k=>$v){ if(is_array($v)) { $arr1[$k]=arrayRecusive($arr1[$k],$v); } else { $arr1[$k]=$v; } } } return $arr1; }
4.array_key_exists()和in_array()
這倆個函數在初期的時候,不留神的時候,容易寫錯。
一個是檢測是否是鍵值存在,另一個是檢測是否是值存在
應用場景
檢測對應的配置是否是已經被加載過(若是加載過,就沒必要從新加載)
array_key_exists("key",$arr)
5.array_push($arr,$test);
將變量$test壓入到$arr內部 用法和$arr[]=$test;差很少
壓入一個值,也是經常使用的功能
對應的一個array_pop($arr)彈出壓入的最後一個值
6.list 將一個數組賦值給變量
場景:用.切割了microtime(true)後,須要將前部分和後部分進行分開儲存
list($t1,$t2) =explode(".",microtime(true))
7.shuffle($arr)將數組打亂後輸出
獲取到新聞和廣告後,須要使得每一個用戶看到的廣告位置不一樣(在通常的資訊站點裏面,每一個頁面放廣告的位置都不一樣,用這種方法來提升點擊率經常使用)
8.array_map("ucfirst",$arr);
回調函數(這個是常常用的)對$arr進行處理,每一個字符串進行首字母大寫
須要調用實例化後的類,而類第一個字母一般是大寫,這樣能夠對$arr內的全部元素進行首字母大寫(返回做用後的大小寫字母)
類似的一個函數有array_walk($arr,"test");(正確區分這倆個函數難度實際上是比較大的)
array_walk($arr,"test") 是過程裏面變更的調用。下面對示例進行說明:
函數
$arr = array("xiong","yuan","liang"); function test($val){ echo ucfirst($val)."<br />"; } function test1($val){ return ucfirst($val)."<br />"; } $arr1= array_walk($arr,"test1"); $arr2 = array_walk($arr,"test"); print_r($arr); echo "<br />"; $arr3 = array_map("test1",$arr); print_r($arr3);
小結:array_map返回的是回調函數的結果,而array_walk返回的是是否回調成功true或者false
若是不用&,倆者都不會改變數組
更形象的用法:array_walk($arr,"test")是能夠用下面這個方法進行替代的
foreach($arr as $key=>$val) {
test($val,$key);
}
9.sort($arr) 會對數組排序
默認是按照天然排序的 通常用其變種函數usort($arr,"test")比較多,test是用戶自定義的函數,能夠按照指定的要求進行排序
test的返回值須要大於等於0,或者小於0(usort根據這個進行排序)
這裏引用一個很是經典的測試:(二維數組的排序,實際上多維數組的排序也差很少,這裏假定了根據每一個二維數組的第二個鍵值進行比較)
測試
function comp($arr1,$arr2){ return strcmp($arr1[1],$arr2[1]); } usort($arr,"comp");
另外有一個PHP方法能夠直接對二維數組進行排序 array_multisort($arr)
10.array_change_key_case()
這個也是一個比較經常使用的PHP數組函數
應用場景:
用戶輸入的時候,可能沒有注意大小寫,或者將Linux和Windows的統一字符串命名的時候,常常須要進行字符串統一
默認狀況下是將輸入的數組進行所有轉化成小寫
array array_change_key_case ( array $input [, int $case = CASE_LOWER ] )
url