PHP実装のカスタム配列ソート関数とソートクラスの例

2171 ワード

この例では、PHP実装のカスタム配列ソート関数とソートクラスについて説明します.皆さんの参考にしてください.具体的には以下の通りです.

/*
*            
* uasort($arr,function_name)
*
**/
$arr = array(
  array('a'=>1,'b'=>'c'),
  array('a'=>4,'b'=>'a'),
  array('a'=>5,'b'=>'g'),
  array('a'=>7,'b'=>'f'),
  array('a'=>6,'b'=>'e')
);
function compare_arr($x,$y){
  if($x['b']$y['b']){
    return 1;
  }else{
    return 0;
  }
}
uasort($arr,'compare_arr');
foreach($arr as $a){
  echo $a['a'].'=>'.$a['b'].'
'; }

マニュアルのカスタムソートクラス:

class multiSort
{
   var $key;  //key in your array
   //                        
   function run ($myarray, $key_to_sort, $type_of_sort = '')
   {
     $this->key = $key_to_sort;
     if ($type_of_sort == 'desc')
       uasort($myarray, array($this, 'myreverse_compare'));
     else
       uasort($myarray, array($this, 'mycompare'));
     return $myarray;
   }
   //  
   function mycompare($x, $y)
   {
     if ( $x[$this->key] == $y[$this->key] )
       return 0;
     else if ( $x[$this->key] < $y[$this->key] )
       return -1;
     else
       return 1;
   }
   //  
   function myreverse_compare($x, $y)
   {
     if ( $x[$this->key] == $y[$this->key] )
       return 0;
     else if ( $x[$this->key] > $y[$this->key] )
       return -1;
     else
       return 1;
   }
}


PHPに関する内容についてもっと兴味のある読者は、「PHP配列(Array)操作技巧大全」、「phpソートアルゴリズム総括」、「php文字列(string)用法総括」、「PHP XMLファイルに対する操作技巧総括」、「PHPエラーと异常処理方法総括」、「PHP演算と演算子用法総括」、「PHP基本文法入門教程」、「phpオブジェクト向けプログラミング入門チュートリアル」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.