PHP實作多維數組排序演算法有哪些方式

php中世界最好的语言
發布: 2023-03-26 16:54:02
原創
1322 人瀏覽過

這次帶給大家PHP實作多維數組排序演算法有哪些方式,PHP實作多維陣列排序演算法的注意事項有哪些,下面就是實戰案例,一起來看一下。

突然想起了一道面試題,把一個多維數組排序。

範例:

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
';     return true;   }elseif($x['key1'] < $y['key1']) {     echo 'false
';     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'].'
';   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值呢?

 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
';     return true;   }elseif($x['key1'] < $y['key1']) {     echo 'false
';     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'].'
';   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就好啦!

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

php應用容器化與部署使用詳解

#PDO對mysql資料庫增刪改查操作類步驟詳解

以上是PHP實作多維數組排序演算法有哪些方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!