昨天做的一个小项目,使用到了PHP5中的一些数组函数,觉得蛮好用的,这里就列出来,主要是和排序相关的,进行一些分析和说明:
/**
* 返回按照数组中特定的id作为key的数组,并且按照key的大小,从小到大进行排列,是为了方便上一条,下一条的需要
*/
public function getArrayOrderByKeyAsc()
{
//echo "getfactor";
$originalArray = $this->getOriginalArray();
$newArray = array();
foreach ($originalArray as $key=>$value) {
//$tmpArr = array($value['id']=>Array("title"=>$value['title'],"time"=>$value['time']));
//print_r($tmpArr);
//$newArray = array_merge_recursive($newArray,$tmpArr);//array_push会重新生产key,按照数字自增的方式。
//array_unshift($newArray,array($value['id']=>Array("title"=>$value['title'],"time"=>$value['time'])));
$newArray[$value['id']] = array("title"=>$value['title'],"time"=>$value['time']);//最直接的方式是直接添加
}
//print_r($newArray);
//echo "after ksort()";
/**
* 按照key的值,从小到大进行排序
*/
ksort($newArray,SORT_NUMERIC);
return $newArray;
}
/**
* 按照指定的方法,对二维数组进行排序。其中$val1,$val2分别表示原二维数组中的两条记录。
* @param array $val1,$val2
* @return 一种比较方式产生的结果。比如是按照该一维数组的time字段进行字符串形式进行排序.
*/
function orderByTime($val1,$val2)
{
return -(strcmp($val1['time'],$val2['time']));
}
/**
* 用来返回按照时间倒序排列的,以id为作为数组的key的一部分元素。
* @param int $maxNum
*/
function getMaxPartArrayOrderByTime($maxNum)
{
$arr1 = $this->getArrayOrderByKeyAsc();
//print_r($arr1);
uasort($arr1,"orderByTime");
//print_r($arr1);
return array_slice($arr1,0,$maxNum,true);
}
/**
* 用来返回按照时间倒序排列的全部数组元素。
*/
function getArrayOrderByTimeDesc()
{
//print_r($arr1);
uasort($arr1,"orderByTime");
//print_r($arr1);
return $arr1;
}
ksort,按照key的值,从小到大进行排序;
uasort($arr1,"orderByTime");这个函数对二维,多维数组进行排序非常有帮助。对于二维数组的某个元素的值进行排序,
你只需要定义好排序方法就OK了。