php处理二维数组(去除重复项,排…

php处理二维数组(去除重复项,排序,转换,去空白等)

  (2010-12-0909:58:09)
php处理二维数组(去除重复项,排序,转换,去空白等)转载▼
标签: 

it

分类: Study
http://blog.sina.com.cn/s/blog_4b3f13300100nejg.html

1. PHP二维数组去重复项函数
PHP数组去除重复项 有个内置函数array_unique (),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数
Php代码
//二维数组去掉重复值  
functionunique_arr($array2D){  
    foreach($array2D as$v){  
         $v=join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串  
         $temp[]= $v;  
      
     $temp=array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组  
    foreach($temp as $k =>$v){  
        $temp[$k]=explode(",",$v);   //再将拆开的数组重新组装  
     
    return$temp;  

2. 二维数组的排序方法
一维数组排序方法:
公用函数:
Php代码
function printr($arr)
{
 echo '

';

 print_r($arr);

 echo '

';
}

第一组 :sort 和 rsort,按照PHP数组键值的顺序asc和逆序desc进行排序,同时破坏原来数组的索引关系——其实是删除索引之后重新建立从0开始的数字索引。
Php代码
$a =array('a'=>1,2);  
 
sort($a);printr($a);  
   
rsort($a);printr($a);  
 
 


第二组函数:asort 和 arsort ,这两个函数就比较厉害一点了,只要他们可以保留数组原有的索引关系,把上例的sort 和rsort 分别用这两个函数替换一下

Php代码
$a =array('a'=>1,2);  
asort($a);printr($a);  
arsort($a);printr($a);  
 
 
第三组PHP数组排序函数:krsort 和 ksort 这两个不同于以上两组,这两函数是对键名进行排序的.
Php代码
$a =array('a'=>1,2);  
ksort($a);printr($a);  

krsort($a);printr($a);  
 

通过自定义函数对PHP数组进行排序,有三个函数分别是:
uasort 通过自定义函数对PHP数组的键值进行排序,并且保留原来的索引关系。
uksort 通过自定义函数对PHP数组的键名进行排序,并且保留原来的索引关系。
usort通过自定义函数对PHP数组的键值进行排序,并且删除原来的索引关系,从零开始建立新的索引。

下面是二维排序:

Php代码
 
 
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 ="SORT_ASC",$SortType1 ="SORT_REGULAR")  
 
  if(!is_array($ArrayData))  
   
      return$ArrayData;  
   
  // Get argsnumber.  
  $ArgCount =func_num_args();  
  // Get keys to sort byand put them to SortRulearray.  
  for($I = 1;$I <$ArgCount;$I++)  
   
      $Arg=func_get_arg($I);  
      if(!eregi("SORT",$Arg))  
       
          $KeyNameList[]= $Arg;  
          $SortRule[]    ='$'.$Arg;  
       
      else 
       
          $SortRule[]    =$Arg;  
       
   
  // Get the valuesaccording to the keys and put them toarray.  
  foreach($ArrayData AS$Key =>$Info)  
   
      foreach($KeyNameListAS$KeyName)  
       
          ${$KeyName}[$Key]=$Info[$KeyName];  
       
   
  // Create the evalstring and evalit.  
  $EvalString ='array_multisort('.join(",",$SortRule).',$ArrayData);';  
  eval($EvalString);  
  return$ArrayData;  

实例:
Php代码
//################# 示例#################  
$arr =array(  
  array(  
      'name'        =>    '学习',  
      'size'        =>    '1235',  
      'type'        =>    'jpe',  
      'time'        =>    '1921-11-13',  
      'class'        =>    'dd',  
  ),  
  array(  
      'name'        =>    '中国功夫',  
      'size'        =>    '153',  
      'type'        =>    'jpe',  
      'time'        =>    '2005-11-13',  
      'class'        =>    'jj',  
  ),  
  array(  
      'name'        =>    '编程',  
      'size'        =>    '35',  
      'type'        =>    'gif',  
      'time'        =>    '1997-11-13',  
      'class'        =>    'dd',  
  ),  
  array(  
      'name'        =>    '中国功夫',  
      'size'        =>    '65',  
      'type'        =>    'jpe',  
      'time'        =>    '1925-02-13',  
      'class'        =>    'yy',  
  ),  
  array(  
      'name'        =>    '中国功夫',  
      'size'        =>    '5',  
      'type'        =>    'icon',  
      'time'        =>    '1967-12-13',  
      'class'        =>    'rr',  
  ),  
);  

echo '

';  

print_r($arr);  echo '

';  

//注意:按照数字方式排序时 153 比 65 小  

$temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");  

print_r($temp);  

echo '
'; 

3. 多维数组转一维数组
Php代码
functionrebuild_array($arr){  //rebuilda array  
  static$tmp=array();  
 
  for($i=0;$i 
    if(is_array($arr[$i])){  
        rebuild_array($arr[$i]);  
    }else{  
        $tmp[]=$arr[$i];  
     
   
 
  return$tmp;  

实例:
Php代码
$arr=array('123.html','456.html',array('dw.html','fl.html',array('ps.html','fw.html')),'ab.html');  
//定义一个三维数组,用来检测我们的函数  
echo '

';  

print_r(rebuild_array($arr));  

echo '
'; 

4. 从数组中删除空白的元素
Php代码
function array_remove_empty(&$arr, $trim =true)     
    
    foreach($arr as $key => $value){     
        if(is_array($value)){     
            array_remove_empty($arr[$key]);     
        }else{     
            $value=trim($value);     
            if($value == ''){     
                unset($arr[$key]);     
            }elseif ($trim){     
                $arr[$key]=$value;     
               
            
        
  

实例:
Java代码
$a =array(array(3),2,'',array('',23),0);  
array_remove_empty($a);  
printr($a); // printr 函数请在本文中找 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值