原创。

要求:对一个具有字符串键名数组 $arr 实施排序后,仍保留对应的字符串键名。

解决办法:

1. 创建一个 $arr 的备份数组 $a.

2. 对原始数组 $arr 实施排序。

3. 创建一个数组 $b, 其键值为原始数组的键名,且其元素 (键值) 顺序,与排好序的数组一致。

4. 调用 array_combine($b, $arr) 方法,通过合并两个数组 来创建一个新数组,其中第一个数组元素为键名,第二个数组元素为键值。以此, 找回丢失了的字符串键名.

1.[代码][PHP]代码

//一个字符串键名(下标)的数组

$fruits=array("柠檬"=>"lemon","橘子"=>"orange","香蕉"=>"banana",

"苹果"=>"apple","蓝莓"=>"blueberry","草莓"=>"strawberry",

"芒果"=>"mango","榴莲"=>"durian","西瓜"=>"watermelon",

"鸭梨"=>"pear","葡萄"=>"grape");

foreach ($fruits as $key => $val) //输出原始数组 $fruits

echo "fruits[".$key."] = ".$val."
";

echo "


";

// 调用 sort_with_keyName()方法, 获得 排好序的数组

$fruits_sorted = sort_with_keyName( $fruits);

//输出最终结果。

foreach($fruits_sorted as $key=>$val)

echo "fruites sorted[".$key."] = ".$val."
";

/* 定义一个对数组 $arr 实施排序,

* 同时保留对应的字符串键名 (下标) 的排序方法

*/

function sort_with_keyName( $arr) {

//在内存的另一处 $a 复制内容与 $arr 一样的数组

foreach($arr as $key => $value)

$a[$key]=$value;

sort($arr); //对数组 $arr 进行排序

/*创建一个以原始数组的键名为元素值 (键值) 的

*数组 $b, 其元素 (键值) 顺序,与排好序的数组 $arr 一致。

*/

$index=0;

foreach ($arr as $keys => $values) //按排序后数组的顺序

foreach($a as $key => $value) //在备份数组中寻找键值

if ($values==$value)//如果找到键值

$b[$index++]=$key; // 则将数组 $b 的元素值,设置成备份数组 $a 的键名

//返回用数组 $b 的键值作为键名,数组 $arr 的键值作为键值,所组成的数组

return array_combine($b, $arr);

};

?>

2.[图片] Array_With_String_Keys.png

php数组排序后保留键名,PHP 数组排序后,仍保留对应的字符串键名相关推荐

  1. php 覆盖相同键的值,php - PHP数组使用相同的字符串键组合值 - SO中文参考 - www.soinside.com...

    我有以下常见问题,但无法确定哪种数组函数可能适用于以下格式: ((已尝试array_merge,array_merge_recursive,array_combine,array_splice,但未按 ...

  2. php数组只保留键值,php合并数组并保留键值的实现方法

    php合并数组,一般会使用array_merge方法. array_merge - 合并一个或多个数组 array array_merge ( array $array1 [, array $... ...

  3. php中合并数组保留键值,php合并数组并保留键值的实现方法

    下面为大家分享一篇php合并数组并保留键值的实现方法,具有很好的参考价值,希望对大家有所帮助. php合并数组,一般会使用array_merge方法. array_merge - 合并一个或多个数组 ...

  4. php数组键值一样的合并,php合并数组并保留键值 php合并数组并保留键值的实现方法...

    想了解php合并数组并保留键值的实现方法的相关内容吗,傲雪星枫在本文为您仔细讲解php合并数组并保留键值的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:php数组合并保留键值,下面大家一起 ...

  5. MybatisPlus:SQL语句打印、SQL分析、自定义主键值策略填充(IdType.INPUT)、动态表名、多租户、枚举、类型处理器、连表自定义SQL(使用wrapper)

    文章目录 1. 简单使用以及配置 - 带分页配置 2. 用法 2.0 Wrapper属性 2.1 @TableId - 自定义主键生成策略 2.2 @TableField - 自定义字段值填充 2.3 ...

  6. SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决

    SQL Server2019 数据库查询所有数据库名.表名.表结构.表字段.主键方法演示 第一章:查询方法 ① 查询所有数据库名 ② 查询所有表名方法 ③ 查询表结构.表字段方法 ④ 查询主键方法 第 ...

  7. php 两个数组键名比较,php array_intersect_assoc 比较两个数组的键名和键值,并返回交集...

    先来看一下array_intersect_assoc函数的语法 array array_intersect_assoc ( array $array1 , array $array2 [, array ...

  8. mybatis 主键自增 insert后返回主键

    mybatis 主键自增 insert后返回主键 : <insert id="insertStudentAutoKey" parameterType="Studen ...

  9. Sql Server获取数据库名,表信息,字段信息,主键信息等

    --Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...

最新文章

  1. Python3中装饰器@typing.overload的使用
  2. VmWare 与 宿主主机通信 STEP BY STEP (适用于刚開始学习的人)
  3. 中文分词工具jieba分词器的使用
  4. 加码 2000 亿还不够,阿里云再建三座超级数据中心加速新基建
  5. 收藏 | Redis 使用 10 个小技巧
  6. SpringBoot 学习 | raibaby Halo v0.4.3 漏洞分析-Ali0th
  7. pytorch模型的保存与加载
  8. Oracle 服务器 进程中的 LOCAL=NO 和 LOCAL=YES
  9. linux网络编程--阻塞与非阻塞
  10. 巧用ActionFilterAttribute实现API日志的记录
  11. python编程高手教程_写给编程高手的Python教程(01) 数据结构
  12. extjs_04_grid(弹出窗口amp;行编辑器 CRUD数据)
  13. 特征码的使用办法_小脚的美丽与哀愁,34/35码的她们都是怎么买鞋的?
  14. 执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0
  15. Atitit 基于图片图像 与文档混合文件夹的分类
  16. Dev-C++每次启动都提示路径库不存在
  17. OGRE 引擎官方基础教程 (一)
  18. 关于腾讯云服务器使用FTP详细配置教程
  19. oracle1参数化,carol2000的LR学习笔记(1)Oracle excel 数据参数化
  20. 产业集群理论及其生态学特性

热门文章

  1. 千锋为你解读Android培训课程体系
  2. 为什么会感觉到头晕眼花
  3. 卷积神经网络「失陷」,CoordConv 来填坑
  4. STM32F407 emmc驱动初始化失败解决方法
  5. 熟悉python编程优先_Python到底是什么?学姐靠它拿了5个offer!
  6. 华为真机调试watch系列手表
  7. 跟着小琼琼学习opencv~
  8. k8s二进制集群部署安装文档
  9. 根据url一键爬取前端页面资源文件,恐怖如斯-----小飞兔
  10. android手机怎么拆机,韩雪拆安卓手机:十分钟熟练拆机/详解每个部件