怎么给多维数组排序?

jackxiang 2009-5-5 19:20 | |
汗,对数组操作太弱了,资料到处翻,还是只有一维数组的方便排序方法,却找不到二维的.  
  MATLAB用久了才知道PHP对数的操作很弱.-_-!!  
  
  一个二维数组:  
  
  $aclass[0]["acid"]   =   1;  
  $aclass[0]["acorder"]   =   3;  
  $aclass[0]["acname"]   =   "入门指南";  
  $aclass[0]["acinfo"]   =   "PHP基础知识";  
  
  $aclass[1]["acid"]   =   2;  
  $aclass[1]["acorder"]   =   1;  
  $aclass[1]["acname"]   =   "应用技巧";  
  $aclass[1]["acinfo"]   =   "PHP编程技巧总结";  
  
  $aclass[2]["acid"]   =   3;  
  $aclass[2]["acorder"]   =   2;  
  $aclass[2]["acname"]   =   "高级应用";  
  $aclass[2]["acinfo"]   =   "PHP程序的高级应用";  
  
  问题一:   问题很简单,怎么按照acorder升序和降序来排列这几个数组,值不变索引不变.  
  print_r的结果应该是:  
  
  Array  
  (  
  
          [0]   =>   Array  
                  (  
                          [acid]   =>   2  
                          [acorder]   =>   1  
                          [acname]   =>   应用技巧  
                          [acinfo]   =>   PHP编程技巧总结  
                  )  
  
          [1]   =>   Array  
                  (  
                          [acid]   =>   3  
                          [acorder]   =>   2  
                          [acname]   =>   高级应用  
                          [acinfo]   =>   PHP程序的高级应用  
                  )  
  
          [2]   =>   Array  
                  (  
                          [acid]   =>   1  
                          [acorder]   =>   3  
                          [acname]   =>   入门指南  
                          [acinfo]   =>   PHP基础知识  
                  )  
  }  
  有没有其它详细的排序方案?自定义的多维数组排序怎么做?给个资料参考也行,我喜欢自己看书理解.  
  
  问题二:   如何取得[acid]   =>   1的那个数组的全部或部分元素?比如我要取得[acid]   =>   1的那个数组[acname]   索引所指向的值,怎么做简单效率高?  
  
  两个问题100分,晚上回来结帖子,郁闷,今天访问老出错.可用分竟然不增加,昏死.


名次排列  
  
  $grade   =   array("score"   =>   array(70,   95,   70.0,   60,   "70"),  
                                "name"   =>   array("Zhang   San",   "Li   Si",   "Wang   Wu",  
                                                                "Zhao   Liu",   "Liu   Qi"));  
  array_multisort($grade["score"],   SORT_NUMERIC,   SORT_DESC,  
                                  //   将分数作为数值,由高到低排序  
                                  $grade["name"],   SORT_STRING,   SORT_ASC);  
                                  //   将名字作为字符串,由小到大排序  
  var_dump($grade);  
    
  
  上例输出结果如下:   array(2)   {  
      ["score"]=>  
      array(5)   {  
          [0]=>  
          int(95)  
          [1]=>  
          string(2)   "70"  
          [2]=>  
          float(70)  
          [3]=>  
          int(70)  
          [4]=>  
          int(60)  
      }  
      ["name"]=>  
      array(5)   {  
          [0]=>  
          string(5)   "Li   Si"  
          [1]=>  
          string(6)   "Liu   Qi"  
          [2]=>  
          string(7)   "Wang   Wu"  
          [3]=>  
          string(9)   "Zhang   San"  
          [4]=>  
          string(8)   "Zhao   Liu"  
      }  

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1758/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-5-5 19:22
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]