首页 > 开发 > PHP > 正文

php对二维数组进行相关操作(排序、转换、去空白等)

2024-05-04 22:34:22
字体:
来源:转载
供稿:网友

技巧提示:

array_keys($array) //返回所有键名  array_values($array) //返回所有键值   $result=array_reverse($input); //将数组颠倒,不保留键名 $result_keyed=array_reverse($input,true); //将数组颠倒,保留键名  array_keys($array,"blue"); //返回值为blue的键名  

1. PHP二维数组去重复项函数 
PHP数组去除重复项有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数

function unique_arr($array2D,$stkeep=false,$ndformat=true) {   // 判断是否保留一级数组键 (一级数组键可以为非数字)   if($stkeep) $stArr = array_keys($array2D);    // 判断是否保留二级数组键 (所有二级数组键必须相同)   if($ndformat) $ndArr = array_keys(end($array2D));    //降维,也可以用implode,将一维数组转换为用逗号连接的字符串   foreach ($array2D as $v){     $v = join(",",$v);      $temp[] = $v;   }    //去掉重复的字符串,也就是重复的一维数组   $temp = array_unique($temp);     //再将拆开的数组重新组装   foreach ($temp as $k => $v)   {     if($stkeep) $k = $stArr[$k];     if($ndformat)     {       $tempArr = explode(",",$v);        foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;     }     else $output[$k] = explode(",",$v);    }    return $output; }  

$array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));   print_r($array2D); print_r(unique_arr($array2D,true)); 

2. 二维数组的排序方法
一维数组排序方法:
公用函数:

function printr($arr) {   echo '<pre>';    print_r($arr);   echo '</pre><br>'; } 

第一组 :sort 和 rsort ,按照PHP数组键值的顺序asc和逆序desc进行排序,同时破坏原来数组的索引关系——其实是删除索引之后重新建立从0开始的数字索引。

$a = array('a'=>1,2);  sort($a); printr($a);  rsort($a); printr($a);  /*Array (   [0] => 1   [1] => 2 )  Array (   [0] => 2   [1] => 1 ) */ 

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

$a = array('a'=>1,2); asort($a); printr($a);   arsort($a); printr($a);  /* Array (   [a] => 1   [0] => 2 )  Array (   [0] => 2   [a] => 1 ) */ 

第三组PHP数组排序函数:krsort 和 ksort ,这两个不同于以上两组,这两函数是对键名进行排序的.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表