入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP中二维数组的排序、去除二维数组的重复、对二维数组的某一字段进行求和的方法

创建时间:2017-03-30 投稿人: 浏览次数:752
/** 
* @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。