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错误。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值