php 數組 按拼音首字母 排序 並分組

php 數組 按拼音首字母 排序 並分組

2018年09月30日 11:18:59 王汪汪wsq 閱讀數 995

 版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wsq926/article/details/82907035

PHP 數組 按照拼音 首字母 排序 並排序:

需要排序的數組 格式:


 
  1. $list = [

  2. [

  3. 'name' => '張三',

  4. 'py' => 'zhnagsan'

  5. ],

  6. [

  7. 'name' => '李四',

  8. 'py' => 'lisi'

  9. ],

  10. [

  11. 'name' => '王五',

  12. 'py' => 'wangwu'

  13. ],

  14. [

  15. 'name' => '趙六',

  16. 'py' => 'zhaoliu'

  17. ],

  18. ];

  19.  
  20. $resault = data_letter_sort($list, 'py');

方法 代碼 如下:


 
  1. /**

  2. * 按照 字母 分組 並 排序

  3. *

  4. * @param {Array} $list ; 需要 排序的 數據, 一維數組

  5. * @param {string} $field ; 排序 需要 依據 的字段,該字段 必須爲 拼音

  6. */

  7. function data_letter_sort($list, $field) {

  8. $resault = array();

  9.  
  10. foreach( $list as $key => $val ){

  11. // 添加 # 分組,用來 存放 首字母不能 轉爲 大寫英文的 數據

  12. $resault['#'] = array();

  13. // 首字母 轉 大寫英文

  14. $letter = strtoupper( substr($val[$field], 0, 1) );

  15. // 是否 大寫 英文 字母

  16. if( !preg_match('/^[A-Z]+$/', $letter) ){

  17. $letter = '#';

  18. }

  19. // 創建 字母 分組

  20. if( !array_key_exists($letter, $resault) ){

  21. $resault[$letter] = array();

  22. }

  23. // 字母 分組 添加 數據

  24. Array_push($resault[$letter], $val);

  25. }

  26. // 依據 鍵名 字母 排序,該函數 返回 boolean

  27. ksort($resault);

  28. // 將 # 分組 放到 最後

  29. $arr_last = $resault['#'];

  30. unset($resault['#']);

  31. $resault['#'] = $arr_last;

  32.  
  33. return $resault;

  34. }

js 數組 按拼音 首字母排序 並分組:點擊連接查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章