php 二維數組排序與遍曆

來源:互聯網
上載者:User
 代碼如下 複製代碼

function multi_array_sort($multi_array,$sort_key,$sort=sort_asc){  
    if(is_array($multi_array)){  
        foreach ($multi_array as $row_array){  
            if(is_array($row_array)){  
                $key_array[] = $row_array[$sort_key];  
            }else{  
                return -1;  
            }  
        }  
    }else{  
        return -1;  
    }  
    array_multisort($key_array,$sort,$multi_array);  
    return $multi_array;  


array(
            array('id'=>1,'data'=>'a'),
            array('id'=>3,'data'=>'c'),
            array('id'=>2,'data'=>'b')
        );

php本身是有一個多維陣列排序的函數的。

 代碼如下 複製代碼

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


方法二

 

 代碼如下 複製代碼

<?php
//以時間inputdate為key值進行二維數組降序排列
function array_sort($arr,$keys,$type){
$keysvalue=array();
$i = 0;
foreach($arr as $key=>$val) {
$val[$keys] = str_replace("-","",$val[$keys]);
$val[$keys] = str_replace(" ","",$val[$keys]);
$val[$keys] = str_replace(":","",$val[$keys]);
$keysvalue[] =$val[$keys];

}
asort($keysvalue); //key值排序
reset($keysvalue); //指標重新指向數組第一個
foreach($keysvalue as $key=>$vals) {
$keysort[] = $key;
}
$new_array = array();
if($type != "asc"){
for($ii=count($keysort)-1; $ii>=0; $ii--) {
$new_array[] = $arr[$keysort[$ii]];
}
}else{
for($ii=0; $ii<count($keysort); $ii++){
$new_array[] = $arr[$keysort[$ii]];
}
}
return $new_array;
}
?>

方法三

 代碼如下 複製代碼

<?php
    $a = array(
       0=>array("id"=>1,"name"=>"小何","addr"=>"0:1"),
       1=>array("id"=>2,"name"=>"小剛","addr"=>"0:1:2"),
       2=>array("id"=>3,"name"=>"小軍","addr"=>"0:1:3"),
       3=>array("id"=>4,"name"=>"公司","addr"=>"0:4"),
    );
function sort_by($array, $keyname = null, $sortby){
    $myarray = $inarray = array();
    foreach($array as $i=>$befree){
      $myarray[$i] = $array[$i][$keyname];
    }
    switch($sortby){
       case 'asc':
       asort($myarray);
       break;
       case 'arsort':
       arsort($myarray);
       break;
       case 'natcasesor':
       natcasesor($myarray);
       break;
    }
    foreach($myarray as $key=>$befree){
        $inarray[$key] = $array[$key];
        }
          return $inarray;
}
print_r(sort_by($a,"addr","arsort"));


print_r($a[2]["id"]);
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.