PHP多维数据排序(不区分大小字母)
1. PHP中最普通的数组排序方法 sort();
看个例子:
- <?php
- $test = array();
- $test[] = 'ABCD';
- $test[] = 'aaaa';
- $test[] = 'Bdka';
- $test[] = '1EEE';
- $test[] = '3666';
- $test[] = 'cddd';
- sort($test);
- foreach($test as $a)
- echo $a.'<br>';
- ?>
运行结果:
由结果可以看出,sort()排序是:先 数字 -> 大写字母 -> 小写字母的顺序排序的
2. 如果非得要不区分大小写来进行排序呢
使用PHP自动的 natcasesort()方法,nat -->native自然;case->大小写;sort->排序
所以从名字上就可以看出这个方法是可以 不区分大小写来进行排序的
- <?php
- $test = array();
- $test[] = 'ABCD';
- $test[] = 'aaaa';
- $test[] = 'Bdka';
- $test[] = '1EEE';
- $test[] = '3666';
- $test[] = 'cddd';
- // sort($test);
- //自然排序,并不区分大小写
- natcasesort($test);
- foreach($test as $a)
- echo $a.'<br>';
- ?>
结果是:
请看,这一次排序的结果是不区分大小写的,不过请注意这个方法对于多维数组一般是得不到想要的结果的
3. PHP的多维数组排序
tips:在PHP中多维数组的排序,一般是以每一个数据项的第一个元素来排序的
看例子:
- <?php
- $person = array();
- $test['name'] = 'Tommy';
- $test['age'] = '1568';
- $person[] = $test;
- $test['name'] = 'john';
- $test['age'] = '18';
- $person[] = $test;
- $test['name'] = '12Boy';
- $test['age'] = '20';
- $person[] = $test;
- $test['name'] = '3cat';
- $test['age'] = '28';
- $person[] = $test;
- $test['name'] = 'apple';
- $test['age'] = '50';
- $person[] = $test;
- $test['name'] = 'Banana';
- $test['age'] = '25';
- $person[] = $test;
- // sort($test);
- //自然排序,并不区分大小写
- natcasesort($person);
- foreach($person as $a)
- echo $a['name'].'--'.$a['age'].'<br>';
- echo '<br><br>===========use sort()==========<br><br>';
- sort($person);
- foreach($person as $a)
- echo $a['name'].'--'.$a['age'].'<br>';
- ?>
结果是:
使用natcasesort()方法,得到的结果是很奇怪的,而且还有提醒,尽管这不是错误,但看着就是不爽;
而使用sort()方法,明显还是不能区分大小写,难道就真的没有办法可以实现这个需求吗,
不知道PHP内是否有这样的方法,或者高手是怎么解决的,我这里做了一个很笨的操作,看代码:
- <?php
- $person = array();
- $test['uppname'] = strtoupper('Tommy');
- $test['name'] = 'Tommy';
- $test['age'] = '1568';
- $person[] = $test;
- $test['uppname'] = strtoupper('john');
- $test['name'] = 'john';
- $test['age'] = '18';
- $person[] = $test;
- $test['uppname'] = strtoupper('12Boy');
- $test['name'] = '12Boy';
- $test['age'] = '20';
- $person[] = $test;
- $test['uppname'] = strtoupper('3cat');
- $test['name'] = '3cat';
- $test['age'] = '28';
- $person[] = $test;
- $test['uppname'] = strtoupper('apple');
- $test['name'] = 'apple';
- $test['age'] = '50';
- $person[] = $test;
- $test['uppname'] = strtoupper('Banana');
- $test['name'] = 'Banana';
- $test['age'] = '25';
- $person[] = $test;
- // sort($test);
- //自然排序,并不区分大小写
- natcasesort($person);
- foreach($person as $a)
- echo $a['name'].'--'.$a['age'].'<br>';
- echo '<br><br>===========use sort()==========<br><br>';
- sort($person);
- foreach($person as $a)
- echo $a['name'].'--'.$a['age'].'<br>';
- ?>
思路:增加一个元素,值为需要排序元素的大写/小写 结果
更多信息可以参考:PHP 数组排序
PHP多维数据排序(不区分大小字母)的更多相关文章
- PHP二维数据排序,二维数据模糊查询
一.因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索.三表合并后的数组结构如下: Array ( [0] => Array ( [history ...
- php 二维数据排序 排行榜
php 二维数据排序 排行榜 $rateCount = array(); foreach($groupUsers as $user){ $rateCount[] = $user['rate']; } ...
- php对二维数据排序
对于一维数组排序比较简单,像使用sort(),asort(),arsort()等函数进行排序,但是对于二维数组比较麻烦,所有借鉴网上的总结了一下 // 对二维数组进行指定key排序 $arr 二维数组 ...
- TensorflowTutorial_二维数据构造简单CNN
使用二维数据构造简单卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 图像和一些时序数据集都可以用二维数据的形式表现,我们此次使用随机分布的二位数据构造一个简单的CNN-网络卷积- ...
- SQL语句检索数据排序及过滤
阅读目录 一:排序检索数据 二:过滤数据 三:高级数据过滤 四:用通配符进行过滤 回到顶部 一:排序检索数据 1.1 排序数据 比如查询数据库中表数据的时候,我们使用如下语句: select * fr ...
- for循环中进行联网请求数据、for循环中进行异步数据操作,数据排序错乱问题解决;
for循环中进行联网请求数据,由于网络请求是异步的,第一个网络请求还没有回调,第二次第三次以及后续的网络请求又已经发出去了,有可能后续的网络请求会先回调:这时我们接收到的数据的排序就会错乱:怎么才能让 ...
- 微软BI 之SSAS 系列 - 多维数据集中度量值设计时的聚合函数 (累加性_半累加性和非累加性)
在 SSAS 系列 - 实现第一个 Cube 以及角色扮演维度,度量值格式化和计算成员的创建 中主要是通过已存在的维度和事实数据创建了一个多维数据集,并同时解释了 Role-Playing Dimen ...
- Berkeley DB使用SecondKey给数据排序的实现方法
Berkeley DB使用SecondKey给数据排序的 实现方法是本文我们主要要介绍的内容,在做项目的时候用到了nosql数据库BDB,借此机会研究了一下它的用法.它的官方示例和文档比较丰富,感觉比 ...
- 【笔记】求数据前n个主成分以及对高维数据映射为低维数据
求数据前n个主成分并进行高维数据映射为低维数据的操作 求数据前n个主成分 先前的将多个样本映射到一个轴上以求使其降维的操作,其中的样本点本身是二维的样本点,将其映射到新的轴上以后,还不是一维的数据,对 ...
随机推荐
- 学习笔记之Struts2—浅析接收参数
最近自己通过视频与相关书籍的学习,对action里面接收参数做一些总结与自己的理解. 0.0.接收参数的(主要)方法 使用Action的属性接收参数 使用DomainModel接收参数 使用Mod ...
- 转:javascript判断IE浏览器
http://blog.csdn.net/ranbolwb/article/details/18555847 function isIE() { //ie? if (!!window.ActiveXO ...
- Windows安装mysql8.0
一.下载并解压 地址:https://dev.mysql.com/downloads/mysql/ 如下图: 下载解压后 二.创建my.ini文件 在D:\mysql\mysql-8.0.13-win ...
- C#和JAVA 访问修饰符
JAVA ----------------------------------------------- 访问修饰符 描述 ------------------------------- ...
- 2、ASP .NETCore 2.0之视图
一.Razor基础 声明:Razor不是编程语言,是服务器端标记语言.Razor是一种允许开发者在网页中嵌入服务器端代码的标记语法(主要是针对VB和C#). 1.C#中Razor基本语法 (1).Ra ...
- hdu Surround the Trees
题目链接:戳我 凸包模板 #include<iostream> #include<cstdio> #include<cstring> #include<alg ...
- 2018.11-2019.1的随记|NOIP的考后随记
就是日记吧?(这里就是写一些乱七八糟的东西qwq,当作自己的零散想念吧 1.24 今天跟着BLUESKY他们的视频一起领略了一下远在广州的CCF冬令营开幕式,看着ljh的拍的照片也体验了一下RM冬令营 ...
- 【09】循序渐进学 docker:docker swarm
写在前面的话 至此,docker 的基础知识已经了解的差不多了,接下来就来谈谈对于 docker 容器,我们如何来管理它. docker swarm 在学习 docker swarm 之前,得先知道容 ...
- maven 引入外部jar包
方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud</groupId> <!--自定义--& ...
- [ActionScript 3.0] 动态链接库
很多时候,我们为了项目和程序结构更加清晰,需要将发布好的swf放到一个固定的地方供主文件引用,这时就会出现发布好的swf所用的as类路径发生改变,为避免这个问题,需要用到动态链接库,以下做一个简单例子 ...