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