上一篇文章中提到了array_column函数,作为终极函数 thinkphp3.2居然不支持,so找了一下解决办法
array_column 用于获取二维数组中的元素(PHP 5.5新增函数),但我们有时候需要在低版本的PHP环境中使用,只要做一个小的改造即可...
自定义一个函数i_array_column(),写到TP的Common中~~
functioni_array_column($input,$columnKey,$indexKey=null){
if(!function_exists('array_column')){
$columnKeyIsNumber=(is_numeric($columnKey))?true:false;
$indexKeyIsNull=(is_null($indexKey))?true:false;
$indexKeyIsNumber=(is_numeric($indexKey))?true:false;
$result=array();
foreach((array)$inputas$key=>$row){
if($columnKeyIsNumber){
$tmp=array_slice($row,$columnKey,1);
$tmp=(is_array($tmp)&&!empty($tmp))?current($tmp):null;
}else{
$tmp=isset($row[$columnKey])?$row[$columnKey]:null;
}
if(!$indexKeyIsNull){
if($indexKeyIsNumber){
$key=array_slice($row,$indexKey,1);
$key=(is_array($key)&&!empty($key))?current($key):null;
$key=is_null($key)?0:$key;
}else{
$key=isset($row[$indexKey])?$row[$indexKey]:0;
}
}
$result[$key]=$tmp;
}
return$result;
}else{
returnarray_column($input,$columnKey,$indexKey);
}
}
在需要用到array_column()函数的地方,只要调用i_array_column()即可,在低版本的PHP环境中,同样可以享受array_column()带来的便捷与快感