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錯誤。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章