PHP中二维数组的排序、去除二维数组的重复、对二维数组的某一字段进行求和的方法
/**
* @package 二维数组排序
* Sort an two-dimension array by some level two items use array_multisort() function.
* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
* @param array $ArrayData the array to sort.
* @param string $KeyName1 the first item to sort by.
* @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC")
* @param string $SortType1 the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
* @return array sorted array.
*/
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
if(!is_array($ArrayData))
{
return $ArrayData;
}
// Get args number.
$ArgCount = func_num_args();
// Get keys to sort by and put them to SortRule array.
for($I = 1;$I < $ArgCount;$I ++)
{
$Arg = func_get_arg($I);
if(!eregi("SORT",$Arg))
{
$KeyNameList[] = $Arg;
$SortRule[] = "$".$Arg;
}
else
{
$SortRule[] = $Arg;
}
}
// Get the values according to the keys and put them to array.
foreach($ArrayData AS $Key => $Info)
{
foreach($KeyNameList AS $KeyName)
{
${$KeyName}[$Key] = $Info[$KeyName];
}
}
// Create the eval string and eval it.
$EvalString = "array_multisort(".join(",",$SortRule).",$ArrayData);";
eval ($EvalString);
return $ArrayData;
}
//去除二维数组中的重复项
/* $array 数组
*
* */function remove_duplicate($array){
$result=array();
for($i=0;$i<count($array);$i++){$source=$array[$i];
if(array_search($source,$array)==$i && $source<>"" ){ $result[]=$source;
}
}
return $result;
}
/*
*二维数组的某一字段求和
*
*
*/
方法一:
array_sum(array_map(create_function("$val", "return $val["size"];"), $arr));
方法二:
array_sum(array_map(function($val){return $val["size"];}, $arr));
对于windows系统,这两种方法均可用。
对于Linux系统,只有方法一可用,如果是方法二的话,会报错:Fatal error: Invalid opcode 153/1/8. in ... ...
此外还有一点要注意,对于Linux系统,代码中的url是区分大小写的,如果真实路径是/ABC/index.PHP,当代码中的$url="/abc/index.php"的话,在windows中可以正常运行,但是Linux中则会报404错误。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Yii1.1中通过Sql查询进行的分页操作
- 下一篇:没有了
