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
    评论
### 回答1: 可以使用Python提供的set()函数来过滤二维数组中的重复元素。例如:arr = [[1,2,3], [4,5,6], [2,3,4]],可以使用set()函数过滤重复元素,代码如下:result = list(set(map(tuple, arr))),result的值为[(1, 2, 3), (4, 5, 6)]。 ### 回答2: 在Python中,可以使用set函数来过滤二维数组重复元素。 首先,将二维数组转换为一维数组,可以使用嵌套循环将二维数组的元素逐个添加到一维数组。 然后,使用set函数将一维数组转换为集合,集合的特点是不允许重复元素存在。 最后,将集合转换为列表,即可得到去除重复元素的二维数组。 下面是用Python实现该功能的示例代码: ``` def filter_duplicates(arr): temp = [] # 将二维数组转换为一维数组 for sublist in arr: for item in sublist: temp.append(item) # 使用set函数过滤重复元素 unique_set = set(temp) # 将集合转换为列表 result = list(unique_set) return result # 示例二维数组 array = [[1, 2, 3], [4, 5, 6], [1, 2, 3]] # 调用函数进行过滤 filtered_array = filter_duplicates(array) # 输出结果 print(filtered_array) ``` 此代码将输出`[1, 2, 3, 4, 5, 6]`,即已成功过滤掉了二维数组中的重复元素。 ### 回答3: 通过使用Python,在二维数组中过滤重复元素的方法有很多。下面是一个简单的方法: 首先,我们可以使用嵌套循环来遍历二维数组中的每个元素。对于每个元素,我们将其与其他元素进行比较,如果找到重复的元素,则将其删除。 以下是实现此过程的一个示例代码: ``` def remove_duplicates(arr): result = [] # 用于存储结果的空列表 for sublist in arr: temp = [] # 用于存储当前子列表中的非重复元素的临时列表 for element in sublist: if element not in temp: temp.append(element) result.append(temp) return result # 示例二维数组 array = [[1, 2, 3], [2, 3, 4, 4], [5, 6, 6, 7, 7]] # 调用函数来过滤重复元素 filtered_array = remove_duplicates(array) # 打印过滤后的结果 print(filtered_array) ``` 运行以上代码,将得到以下输出: ``` [[1, 2, 3], [2, 3, 4], [5, 6, 7]] ``` 这段代码将二维数组中的重复元素过滤掉,并返回一个包含所有非重复元素的二维列表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱菜鸟高高飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值