今天看啥
    热点:

      天发国际娱乐官网:  其次,用人单位树立科学的用人理念。

      PHP实现的多维数组排序算法分析,多维算法分析


      本文实例讲述了PHP实现的多维数组排序算法。分享给大家供大家参考,具体如下:

      突然想起了一道面试题,把一个多维数组排序。

      例:

      <?php
      //有一个多维数组
      $a = array(
        array('key1'=>940, 'key2'=>'blah'),
        array('key1'=>23, 'key2'=>'this'),
        array('key1'=>894, 'key2'=>'that')
      );
      //那么怎么对key1或者key2进行排序呢,这里就需要使用到usort($arr, 'myfunction')函数了,它的作用是对$arr使用我们自定义的方法进行排序,具体使用方法可以查看手册
      //1.对key1的值进行排序
      function asc_key1_sort($x, $y) {
        //可以输出一下看看是怎么比较的
        echo 'Iteration:'.$x['key1'].' vs '.$y['key1'];
        if($x['key1'] > $y['key1']) {
          echo 'true<br/>';
          return true;
        }elseif($x['key1'] < $y['key1']) {
          echo 'false<br/>';
          return false;
        }else {
          echo '0';
          return 0;
        }
      }
      //进行排序
      usort($a, 'asc_key1_sort');
      var_dump($a);
      //2.对key2字符进行排序
      function asc_key2_sort($x, $y) {
        //可以使用strcasecmp()函数进行排序
        echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>';
        return strcasecmp($x['key2'], $y['key2']);
      }
      //进行排序
      usort($a, 'asc_key2_sort');
      var_dump($a);
      ?>
      
      

      运行结果:

      Iteration:23 vs 940false
      Iteration:894 vs 23true
      Iteration:940 vs 23true
      Iteration:894 vs 940false
      array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this
      Iteration:blah vs that
      array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } } 
      
      

      如果我的多维数组中也有key值呢?

      <?php
      //有一个多维数组
      $a = array(
        123 => array('key1'=>940, 'key2'=>'blah'),
        349 => array('key1'=>23, 'key2'=>'this'),
        43 => array('key1'=>894, 'key2'=>'that')
      );
      //那么怎么对key1或者key2进行排序呢,这里就需要使用到usort($arr, 'myfunction')函数了,它的作用是对$arr使用我们自定义的方法进行排序,具体使用方法可以查看手册
      //1.对key1的值进行排序
      function asc_key1_sort($x, $y) {
        //可以输出一下看看是怎么比较的
        echo 'Iteration:'.$x['key1'].' vs '.$y['key1'];
        if($x['key1'] > $y['key1']) {
          echo 'true<br/>';
          return true;
        }elseif($x['key1'] < $y['key1']) {
          echo 'false<br/>';
          return false;
        }else {
          echo '0';
          return 0;
        }
      }
      //进行排序
      usort($a, 'asc_key1_sort');
      var_dump($a);
      //2.对key2字符进行排序
      function asc_key2_sort($x, $y) {
        //可以使用strcasecmp()函数进行排序
        echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>';
        return strcasecmp($x['key2'], $y['key2']);
      }
      //进行排序
      usort($a, 'asc_key2_sort');
      var_dump($a);
      ?>
      
      

      运行结果:

      Iteration:23 vs 940false
      Iteration:894 vs 23true
      Iteration:940 vs 23true
      Iteration:894 vs 940false
      array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this
      Iteration:blah vs that
      array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } } 
      
      

      这样的排序结果不会保留123,349,43。这时候只要把usort()换成uasort就好啦!

      PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

      在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
      http://www.1click-soft.com/tfgjylgw/aideddesign/paixu_ys

      更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

      希望本文所述对大家PHP程序设计有所帮助。

      www.1click-soft.comtruehttp://www.1click-soft.com/PHPjc/1304256.htmlTechArticlePHP实现的多维数组排序算法分析,多维算法分析 本文实例讲述了PHP实现的多维数组排序算法。分享给大家供大家参考,具体如下: 突然想...

      相关文章

      相关搜索: PHP 多维数组 排序算法

      帮客评论

      视觉看点
      百度 360 搜狗