php二维数组排序与遍历

关于php二维数组定义我就不说多了,很简单的,下面几款实例都是讲关于php 二维数组排序与遍历,我们每个实例都是以不同的方法介绍,代码如下:

  1. function multi_array_sort($multi_array,$sort_key,$sort=sort_asc){
  2. if(is_array($multi_array)){
  3. foreach ($multi_array as $row_array){
  4. if(is_array($row_array)){
  5. $key_array[] = $row_array[$sort_key];
  6. }else{
  7. return -1;
  8. }
  9. }
  10. }else{
  11. return -1;
  12. }
  13. array_multisort($key_array,$sort,$multi_array);
  14. return $multi_array;
  15. }
  16. array(
  17. array('id'=>1,'data'=>'a'),
  18. array('id'=>3,'data'=>'c'),
  19. array('id'=>2,'data'=>'b')
  20. );

php本身是有一个多维数组排序的函数的,代码如下:

bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] )

方法二,代码如下:

  1. <?php
  2. //以时间inputdate为key值进行二维数组降序排列
  3. function array_sort($arr,$keys,$type){
  4. $keysvalue=array();
  5. $i = 0;
  6. foreach($arr as $key=>$val) {
  7. $val[$keys] = str_replace("-","",$val[$keys]);
  8. $val[$keys] = str_replace(" ","",$val[$keys]);
  9. $val[$keys] = str_replace(":","",$val[$keys]);
  10. $keysvalue[] =$val[$keys];
  11. }
  12. asort($keysvalue); //key值排序
  13. reset($keysvalue); //指针重新指向数组第一个
  14. foreach($keysvalue as $key=>$vals) {
  15. $keysort[] = $key;
  16. }
  17. $new_array = array();
  18. if($type != "asc"){
  19. for($ii=count($keysort)-1; $ii>=0; $ii--) {
  20. $new_array[] = $arr[$keysort[$ii]];
  21. }
  22. }else{
  23. for($ii=0; $ii<count($keysort); $ii++){
  24. $new_array[] = $arr[$keysort[$ii]];
  25. }
  26. }
  27. return $new_array;
  28. }
  29. ?>

方法三,代码如下:

  1. <?php
  2. $a = array(
  3. 0=>array("id"=>1,"name"=>"小何","addr"=>"0:1"),
  4. 1=>array("id"=>2,"name"=>"小刚","addr"=>"0:1:2"),
  5. 2=>array("id"=>3,"name"=>"小军","addr"=>"0:1:3"),
  6. 3=>array("id"=>4,"name"=>"公司","addr"=>"0:4"),
  7. );
  8. function sort_by($array, $keyname = null, $sortby){
  9. $myarray = $inarray = array();
  10. foreach($array as $i=>$befree){
  11. $myarray[$i] = $array[$i][$keyname];
  12. }
  13. switch($sortby){
  14. case 'asc':
  15. asort($myarray);
  16. break;
  17. case 'arsort':
  18. arsort($myarray);
  19. break;
  20. case 'natcasesor':
  21. natcasesor($myarray);
  22. break;
  23. }
  24. foreach($myarray as $key=>$befree){
  25. $inarray[$key] = $array[$key];
  26. }
  27. return $inarray;
  28. }
  29. print_r(sort_by($a,"addr","arsort"));
  30. //开源软件:phpfensi.com
  31. print_r($a[2]["id"]);
  32. ?>