php 數組 按拼音首字母 排序 並分組
2018年09月30日 11:18:59 王汪汪wsq 閱讀數 995
版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wsq926/article/details/82907035
PHP 數組 按照拼音 首字母 排序 並排序:
需要排序的數組 格式:
-
$list = [
-
[
-
'name' => '張三',
-
'py' => 'zhnagsan'
-
],
-
[
-
'name' => '李四',
-
'py' => 'lisi'
-
],
-
[
-
'name' => '王五',
-
'py' => 'wangwu'
-
],
-
[
-
'name' => '趙六',
-
'py' => 'zhaoliu'
-
],
-
];
-
$resault = data_letter_sort($list, 'py');
方法 代碼 如下:
-
/**
-
* 按照 字母 分組 並 排序
-
*
-
* @param {Array} $list ; 需要 排序的 數據, 一維數組
-
* @param {string} $field ; 排序 需要 依據 的字段,該字段 必須爲 拼音
-
*/
-
function data_letter_sort($list, $field) {
-
$resault = array();
-
foreach( $list as $key => $val ){
-
// 添加 # 分組,用來 存放 首字母不能 轉爲 大寫英文的 數據
-
$resault['#'] = array();
-
// 首字母 轉 大寫英文
-
$letter = strtoupper( substr($val[$field], 0, 1) );
-
// 是否 大寫 英文 字母
-
if( !preg_match('/^[A-Z]+$/', $letter) ){
-
$letter = '#';
-
}
-
// 創建 字母 分組
-
if( !array_key_exists($letter, $resault) ){
-
$resault[$letter] = array();
-
}
-
// 字母 分組 添加 數據
-
Array_push($resault[$letter], $val);
-
}
-
// 依據 鍵名 字母 排序,該函數 返回 boolean
-
ksort($resault);
-
// 將 # 分組 放到 最後
-
$arr_last = $resault['#'];
-
unset($resault['#']);
-
$resault['#'] = $arr_last;
-
return $resault;
-
}
js 數組 按拼音 首字母排序 並分組:點擊連接查看