郑州网站制作哪家招聘,wordpress评论头像问题,开发公司更换物业公司的请示,河南建设网站公司如果你已经使用了一段时间PHP的话#xff0c;那么#xff0c;你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值#xff0c;并且可以把它们作为一个集合进行操作。经常#xff0c;开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序…如果你已经使用了一段时间PHP的话那么你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值并且可以把它们作为一个集合进行操作。经常开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用。PHP提供了一些适合多种数组的排序函数这些函数允许你在数组内部对元素进行排列也允许用很多不同的方法对它们进行重新排序。在这篇文章中我们将讨论该排序中最重要的几个函数。简单排序首先让我们来看看最简单的情况将一个数组元素从低到高进行简单排序这个函数既可以按数字大小排列也可以按字母顺序排列。PHP的sort()函数实现了这个功能如Listing A所示Listing AÂ $data array(5,8,1,7,2);Â sort($data);Â print_r($data);Â ?输出结果如下所示Array ([0] 1[1] 2[2] 5[3] 7[4] 8)也能使用rsort()函数进行排序它的结果与前面所使用的sort()简单排序结果相反。Rsort()函数对数组元素进行从高到低的倒排同样可以按数字大小排列也可以按字母顺序排列。Listing B给我们展示了它的一个例子Listing B?它的输出结果如下Array ([0] 8[1] 7[2] 5[3] 2[4] 1)根据关键字排序当我们使用数组的时候经常根据关键字对数组重新排序从高到低。Ksort()函数就是根据关键字进行排序的函数同时它在排序的过程中会保持关键字的相关性。Listing C就是一个例子Listing C?php $data array(US United States, IN India, DE Germany, ES Spain);ksort($data); print_r($data);?它的输出结果如下Array ([DE] Germany[ES] Spain[IN] India[US] United States)Krsort()函数是根据关键字对数组进行倒排Listing D就是这样的例子Listing D?php $data array(US United States, IN India, DE Germany, ES Spain);krsort($data); print_r($data);?它的输出结果如下Array ([US] United States[IN] India[ES] Spain[DE] Germany)根据值排序如果你想使用值排序来取代关键字排序的话PHP也能满足你的要求。你只要使用asort()函数来代替先前提到的ksort()函数就可以了。如Listing E所示Listing E?php $data array(US United States, IN India, DE Germany, ES Spain);asort($data); print_r($data);?下面就是它的输出结果。请注意这个结果与上面使用ksort()函数所得到的结果的不同——在这两种情况中都是按字母顺序进行排序的但是它们是根据数组的不同字段进行排序的。同时请注意关键字-值之间的联系会始终保持它只是关键字-值对排序后的一种方式排序并不会改变它们的对应关系。Array ([DE] Germany[IN] India[ES] Spain[US] United States)现在你肯定能猜到这种排序也可以进行倒排它使用arsort()函数完成这个功能。Listing F就是一个例子Listing F?php $data array(US United States, IN India, DE Germany, ES Spain);arsort($data); print_r($data);?下面是它的输出结果根据值按字母表顺序进行倒排。将下面的结果与用krsort()函数进行倒排后生成的结果进行比较就能很容易明白两者的不同了。Array ([US] United States[ES] Spain[IN] India[DE] Germany)自然语言排序PHP有一个非常独特的排序方式这种方式使用认知而不是使用计算规则。这种特性称为自然语言排序当创建模糊逻辑应用软件的时候这种排序方式非常有用。下面大家可以来看看它的一个简单例子如Listing G所示Listing Gnatsort($data); print_r($data);?它的输出结果如下Array ([0] book-1[1] book-10[2] book-100[3] book-5)Array([0] book-1[3] book-5[1] book-10[2] book-100)它们的不同已经很清楚了第二个排序结果更直观更“人性化”然而第一个则更符合算法规则更具“计算机”特点。自然语言能进行倒排吗答案是肯定的只要对natsort()的结果使用array_reverse()函数就可以了Listing H就是一个简单例子Listing H?下面是它的输出结果Array ([0] book-100[1] book-10[2] book-5[3] book-1)根据用户自定义的规则排序PHP也能让你定义自己的排序算法你可以通过创建你自己的比较函数并把它传递给usort()函数。如果第一个参数比第二个参数“小”的话比较函数必须返回一个比0小的数如果第一参数比第二个参数“大”的话比较函数应该返回一个比0大的数。Listing I就是这样的一个例子在这个例子中根据它们的长度对数组元素进行排序最短的项放在最前面Listing Iprint_r($data); function sortByLen($a, $b) {if (strlen($a) strlen($b)) {return 0;} else {return (strlen($a) strlen($b)) ? 1 : -1;}}?这样就创建了我们自己的比较函数这个函数使用strlen()函数比较每一个字符串的个数然后分别返回10或-1.这个返回值是决定元素排列的基础。下面是它的输出结果Array ([0] jayzoo.tw[1] joehost.com[2] john.doegh.co.uk[3] asmithsonianus.info)自然语言排序PHP有一个非常独特的排序方式这种方式使用认知而不是使用计算规则。这种特性称为自然语言排序当创建模糊逻辑应用软件的时候这种排序方式非常有用。下面大家可以来看看它的一个简单例子如Listing G所示Listing Gnatsort($data); print_r($data);?它的输出结果如下Array ([0] book-1[1] book-10[2] book-100[3] book-5)Array([0] book-1[3] book-5[1] book-10[2] book-100)它们的不同已经很清楚了第二个排序结果更直观更“人性化”然而第一个则更符合算法规则更具“计算机”特点。自然语言能进行倒排吗答案是肯定的只要对natsort()的结果使用array_reverse()函数就可以了Listing H就是一个简单例子Listing H?下面是它的输出结果Array ([0] book-100[1] book-10[2] book-5[3] book-1)根据用户自定义的规则排序PHP也能让你定义自己的排序算法你可以通过创建你自己的比较函数并把它传递给usort()函数。如果第一个参数比第二个参数“小”的话比较函数必须返回一个比0小的数如果第一参数比第二个参数“大”的话比较函数应该返回一个比0大的数。Listing I就是这样的一个例子在这个例子中根据它们的长度对数组元素进行排序最短的项放在最前面Listing Iprint_r($data); function sortByLen($a, $b) {if (strlen($a) strlen($b)) {return 0;} else {return (strlen($a) strlen($b)) ? 1 : -1;}}?这样就创建了我们自己的比较函数这个函数使用strlen()函数比较每一个字符串的个数然后分别返回10或-1.这个返回值是决定元素排列的基础。下面是它的输出结果Array ([0] jayzoo.tw[1] joehost.com[2] john.doegh.co.uk[3] asmithsonianus.info)多维排序最后PHP也允许在多维数组上执行一些比较复杂的排序——例如首先对一个嵌套数组使用一个普通的关键字进行排序然后再根据另一个关键字进行排序。这与使用SQL的ORDER BY语句对多个字段进行排序非常相似。为了能更好的明白它是如何工作的请仔细看Listing J所举的例子Listing J?php $data array(array(id 1, name Boney M, rating 3),array(id 2, name Take That, rating 1),array(id 3, name The Killers, rating 4),array(id 4, name Lusain, rating 3),); foreach ($data as $key $value) {$name[$key] $value[name];$rating[$key] $value[rating];}array_multisort($rating, $name, $data); print_r($data);?这里我们在$data数组中模拟了一个行和列数组。然后我使用array_multisort()函数对数据集合进行重排首先是根据rating进行排序然后如果rating相等的话再根据name排序。它的输出结果如下Array ([0] Array([id] 2[name] Take That[rating] 1) [1] Array([id] 1[name] Boney M[rating] 3)[2] Array([id] 4[name] Lusain[rating] 3)[3] Array([id] 3[name] The Killers[rating] 4))array_multisort()函数是PHP中最有用的函数之一它有非常广泛的应用范围。另外就如你在例子中所看到的它能对多个不相关的数组进行排序也可以使用其中的一个元素作为下次排序的基础还可以对数据库结果集进行排序。这些例子应该让你对PHP中各种数组排序函数的使用有了初步的了解也向你展示了一些隐藏在PHP数组处理工具包的内部功能。下面是对二位数组中的某个字段进行排序的两种方式方法PHP对数组的某个字段排序方法1private function arrCmp($a,$b){if($a[day_time] $b[day_time]){return 0;}return($a[day_time]}使用方法usort($new, array(DeveloperController, arrCmp));数组原型Array ([0] Array ( [day_time] 1291161600 [one_sum_click_num] 2 [two_sum_click_num] 2 )[1] Array ( [day_time] 1291248000 [one_sum_click_num] 7 [two_sum_click_num] 5 )[2] Array ( [day_time] 1291334400 [one_sum_click_num] 4 )[3] Array ( [day_time] 1291593600 [two_sum_click_num] 2 ) ) )这样子根据其数组中的 day_time字段进行排序。下面是摘自php 手册上的说明。对数据库结果进行排序 方法2本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。例子中的数据如下volume | edition --------------- 67 | 2 86 | 1 85 | 6 98 | 2 86 | 6 67 | 7数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果例如 mysql_fetch_assoc()。$data[] array(volume67,edition2);$data[] array(volume86,edition1);$data[] array(volume85,edition6);$data[] array(volume98,edition2);$data[] array(volume86,edition6);$data[] array(volume67,edition7);?本例中将把 volume 降序排列把 edition 升序排列。现在有了包含有行的数组但是 array_multisort() 需要一个包含列的数组因此用以下代码来取得列然后排序。?php // 取得列的列表foreach ($dataas$key$row) {$volume[$key] $row[volume];$edition[$key] $row[edition];}// 将数据根据 volume 降序排列根据 edition 升序排列// 把 $data 作为最后一个参数以通用键排序array_multisort($volume,SORT_DESC,$edition,SORT_ASC,$data);?数据集合现在排好序了结果如下volume | edition --------------- 98 | 2 86 | 1 86 | 6 85 | 6 67 | 2 67 | 7