像通讯录一样的排序法

php实现姓名根据首字母排序的类与方法 PHP 处理按姓名首字母排序处理方法 阅读详情

1,封装方法

/**
	 * [zhcnToPinyin 转换方法]
	 * @param  [type] $str [字符串]
	 * @return [type]      [description]
	 */
	function zhcnToPinyin($str){
		if(empty($str)){return '';}
		$fchar=ord($str{0});
		if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});
		$s1=iconv('UTF-8','gb2312',$str);
		$s2=iconv('gb2312','UTF-8',$s1);
		$s=$s2==$str?$s1:$str;
		if (!isset($s{1})) return $str;
		$asc=ord($s{0})*256+ord($s{1})-65536;
		if($asc>=-20319&&$asc<=-20284) return 'A';
		if($asc>=-20283&&$asc<=-19776) return 'B';
		if($asc>=-19775&&$asc<=-19219) return 'C';
		if($asc>=-19218&&$asc<=-18711) return 'D';
		if($asc>=-18710&&$asc<=-18527) return 'E';
		if($asc>=-18526&&$asc<=-18240) return 'F';
		if($asc>=-18239&&$asc<=-17923) return 'G';
		if($asc>=-17922&&$asc<=-17418) return 'H';
		if($asc>=-17417&&$asc<=-16475) return 'J';
		if($asc>=-16474&&$asc<=-16213) return 'K';
		if($asc>=-16212&&$asc<=-15641) return 'L';
		if($asc>=-15640&&$asc<=-15166) return 'M';
		if($asc>=-15165&&$asc<=-14923) return 'N';
		if($asc>=-14922&&$asc<=-14915) return 'O';
		if($asc>=-14914&&$asc<=-14631) return 'P';
		if($asc>=-14630&&$asc<=-14150) return 'Q';
		if($asc>=-14149&&$asc<=-14091) return 'R';
		if($asc>=-14090&&$asc<=-13319) return 'S';
		if($asc>=-13318&&$asc<=-12839) return 'T';
		if($asc>=-12838&&$asc<=-12557) return 'W';
		if($asc>=-12556&&$asc<=-11848) return 'X';
		if($asc>=-11847&&$asc<=-11056) return 'Y';
		if($asc>=-11055&&$asc<=-10247) return 'Z';
		return null;
	}
	
	

2,调用方法

/**
	 * [call 调用方法]
	 * @param  [type] $data [传进来的数组]
	 * @param  [type] $key  [要转换的名称]
	 * @return [type]       [扔出去数组]
	 */
	public function call($data,$key){

		foreach($data as $key => $item) {
		  $py = $this->zhcnToPinyin($item[$key]);
		  if (isset($newArr[$py])) {
		  	$newArr[$py]['pinyin'] = $py;
		  	$newArr[$py][] = $item;
		  } else {
		  	$newArr[$py]['pinyin'] = $py;
		  	$newArr[$py][] = $item;
		  }
		}
		ksort($newArr);
		$list=[];
		foreach($newArr as $k=>$vv){
			if (preg_match ("/^[a-z]/i", $k)) {
				$list['a'][$k] = $vv;
			}else{
				$list['t'][$k] = $vv;
			}
			
		}
		return $list;
	}

 

ABCD选项的排序方式 Array.prototype.sort()的排序稳定性 排序稳定性(stablesorting)是排序算法的重要属性,指的是排序关键字相同的项目,排序前后的顺序不变。 const arr = [ 'peach', 'straw', 'apple', 'spork' ]; const stableSorting = (s1, s2) => { if (s1[0] < s2[0]) return -1; return 1; }; arr.sort(stable... 阅读详情

相关推荐

C语言一百题第三题:通讯录的排序问题解决及算法的优化,问题的本质回归到多个字符串的排序问题。

结构:原题-代码冗杂性分析-算法优化原题解决代码冗杂性分析算法优化问题简单化理解回归原题 原题解决 1.原题:输入n个朋友的信息,包括姓名、生日、电话号码,请编写程序,按照年龄从大到小的顺序依次输出通讯录。 输入格式: 输入第一行给出正整数n(<=20)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。 输出格式: 按照年龄从大到小输出朋友

liaozhi11的博客 765

php 获取中文字符拼音首字母

1 //php获取中文字符拼音首字母 2 function getFirstCharter($str){ 3 if(empty($str)){return '';} 4 $fchar=ord($str{0}); 5 if($fchar>=ord('A')&&$fchar<=ord('z')) return strtouppe...

weixin_34186950的博客 214

pta 8-4 通讯录排序 (25分)

pta 8-4 通讯录排序 (25分) 输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。 输出格式: 按照年龄从大到小输出朋友的信息,格式同输出。 #includ

fucktheworlddjb的博客 339

数组按照字母排序 abc 排序

使用字母的 Unicode编码进行排序 var arr = ['a', 'b', 'c', 'A', 'B'] ; 以此arr为例,这里是每个字母的Unicode编码 a - b 从小到大 b - a 从大到小 var arr = ['a', 'b', 'c', 'A', 'B'] arr.sort(function(a, b) { return a.charCodeAt(0).toString(16) - b.charCodeAt(0).toString(16)...

xjh的博客 1790

tmux + Claude Code 远程开发指南:从 WSL 配置到断线无忧

远程开发中,SSH 连接中断常导致后台任务丢失,这是困扰开发者的经典难题。tmux 作为终端复用器,通过将进程挂在常驻会话中,使其脱离 SSH 连接独立运行,从根本上解决了断线导致的任务终止问题。Claude Code 等 AI 编程代理需要长时间运行并保持交互上下文,恰好依赖这种会话持久化能力。结合 Windows Subsystem for Linux 提供类 Unix 环境,开发者可在 Windows 上实现稳定的远程开发工作流。本文将完整介绍从 WSL 环境配置、tmux 会话管理,到与 Claud

weixin_30423065的博客 348

Dify沙盒容器部署实战:解决config.yaml缺失与系统调用权限问题

本文详细解析了Dify沙盒容器部署中的两大常见问题:config.yaml缺失与系统调用权限限制。通过实战步骤指导如何正确配置卷挂载解决`no such file or directory`错误,并深入讲解如何调整`allowed_syscalls`白名单应对`error: operation not permitted`权限问题,帮助开发者高效完成Dify容器化部署。

gg901的博客 920

PHP获取 汉字首字母

【代码】PHP获取 汉字首字母。

chengjianghao的博客 845

Windows BITS服务:后台智能文件传输技术详解

后台文件传输技术是现代IT基础设施中的关键组件,Windows BITS(Background Intelligent Transfer Service)作为微软原生解决方案,通过队列管理和智能调度实现高效数据传输。其核心技术原理包括分块传输、断点续传和带宽自适应,能够根据网络状况动态调整传输速率(默认占用空闲带宽的80%)。在工程实践中,BITS特别适用于企业软件分发和自动化数据采集场景,通过PowerShell命令即可实现高优先级传输和代理配置。相比传统FTP方案,BITS在跨国文件传输中将失败率从30

weixin_42116058的博客 273

通讯录排序的解题方法

最近做了一个通讯录排序问题,在这边想和各位分享一下我的思路做法,如果没时间看,可以直接跳到最后获取代码;

2301_79211749的博客 1023

利用makehumancommunity导入人体模型到COMSOL里(需要solidwork)

#makehumancommunity #solidwork #COMSOL

qq_41227634的博客 2156

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1914

python数据结构实验设计(单链表):通讯录管理

设计开发一个简单的通讯录管理程序。设计开发这个系统需要用到链表、文件读取操作、结构体、函数、指针、等C语言知识。本课程设计将会实现的功能包括:读取计算机文件里的通讯录联系人信息(姓名、号码、分组),并生成以名字为排序依据的单链表、统计联系人个数、对联系人信息进行准确查找和模糊查找、新增和删除联系人以及将两个通讯录合并。

weixin_63931094的博客 3357

YOLO11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

魔改工程师的博客 4504

7-30 通讯录排序

7-30 通讯录排序 题目描述: 输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过1...

xiaosuC的博客 720

Android16 自定义HAL层适配一些VINTF和SELINUX问题修改

在RK里面一般权限矩阵在/rockchip/common/manifests/目录,我这版Android16的代码比较特殊,这里重点修改/device/rockchip/rockchip_generic/manifests/frameworks_compatibility_matrix.xml这个文件,不同的版本注册方式不同,在。hal_ruip_default.te,hal_ruip.te,attributes文件。拓展策略的方式添加,但是在Android16里面发现用不了。发现HAL层服务注册成功了。

tzj1058756809的博客 242

超声波法检测局部放电的原理与实现

摘要:超声波法通过捕捉局部放电产生的声波信号进行检测,系统由超声波传感器、信号调理单元和数据采集系统组成。其核心应用是局放源定位,主要采用时差定位法和声-电联合定位法。该方法具有抗电磁干扰强、定位精确等优点,但也存在信号衰减大、传播路径复杂等缺点,典型应用于变压器、GIS等设备的在线监测与故障诊断。

start_up_go的博客 373

用Java代码实现选择排序法

package com.hu.controller; public class Test { public static void main(String[] args) { //声明一个整形的数组 并手动输入几个数 int[] arr={11,665,9859,789,74,45,65,}; //temp: 用于交换两个数位置 int temp; //选择排序法 for(...

wness的博客 1314

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

浅谈ios设计之使用表格UITableVIew设计通讯录的方法

思路;首先自作一份或者网上下载一份通讯录的 plist 文件 之后创建工程和显示通讯录的表格 代码实现如下(全部代码) 1、创建导航栏和根视图 AppDelegate.h #import <UIKit/UIKit.h> #import "SortednameTableViewController.h"//导头文件(用于创建根视图) @inte...

weixin_30505043的博客 155

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

通讯录排序

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同

RAB_HW的博客 360

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言学习总结--通讯录项目

在写通讯录前,基本没有什么思路,但是脑海中对于大概用到了什么功能还是有数的,就是无法有效的串联,当时请教了老师,老师给的建议是,把链表关于增删改查的操作,多敲几遍就会有所收获 本次用到的知识模块有 1、数据结构--单向链表 2、结构体 3、文件编程 4、排序 本程序实现了 (理论上本通讯录人数无上限) 1、添加联系人: 如:学号、姓名、电话、qq号、家庭住址等 2、查找联系人:根据...

ls_dashang的博客 1170

习题9-5 通讯录排序 (20 分)

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。 输出格式: 按照年龄从大到小输出朋友的信息,格式同输出。 输入样例: 3 zhang 198504

小言同学的博客 273

C语言简单项目 通讯录(使用文件操作实现保存,代码量1000+)

本程序使用单向循环列表,拥有基本功能 1.增加联系人, 2.删除联系人, 3.修改联系人信息, 4.显示所有联系人, 5.排序显示所有联系人 (堆排序法) 除了简单的功能外,还完善了许多的小bug,如 1.输入指令时如果输入字符个数多了或者不是想要的字符,会报相应错误,并要求重新输入 2.显示联系人时,只需要输入前几位信息就会显示所有符合的联系人,(如拥有联系人menglinggo...

qq_42720695的博客 1075

[PTA]习题9-5 通讯录排序

输入 n 个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

春天熊的技术博客 1835

[PTA]实验9-8 通讯录排序

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

春天熊的技术博客 1889

c语言用文件操作来输入数据库,C语言简单项目 通讯录(使用文件操作实现保存,代码量1000+)...

#include #define T 1#define F 0typedef char elementype;typedef int status;typedef struct tongxue{char name[20];elementype xuehao[20];elementype shoujihao[20];elementype qqhao[20];}link;typedef struct ...

weixin_34942564的博客 726

结构体和链表

一、PTA实验作业 题目1:7-4通讯录的录入与显示: 通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。 1. 本题PTA提交列表 2.设计思路 输出输入当然不是难点,当然如果要查询数据并编号的话用数组操作会更顺手,所以定义了一个结构数组用来存放数据,...

b217217的博客 165
上一篇: Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护
下一篇: 汉字转换拼音
dreamboycs
博客等级 码龄8年 17粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值