`
purpen
  • 浏览: 796721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php 排序函数 sort、rsort、asort、arsort、ksort、krsort的区别

PHP 
阅读更多

1,快速创建数组的函数range()

比如range()函数 可 以快速创建从1到9的数字数组:


<?php
$numbers=range(1,9);
echo $numbers[1];
?>


当然,使用 range(9,1)则创建了9到1的数字数组。同时,range()还可以创建从a到z 的字符数组:


<?php
$numbers=range(a,z);
foreach ($numbers as $mychrs)
    echo $mychrs." ";
?>


使 用字符数组时注意大小写,比如range(A,z)和range(a,Z)是不一样的。

range()函数还具有第三个 参数 ,该参数的作用是设定步长 ,比如range(1,9,3 ) 创建的数组元素是:1、4、7

 

2,PHP中常规数组的排序

一般数组中的各元素均以字符或数字表现的,所以可对数组元素进行升序排 列,该功能函数为sort() 。比如:


<?php
$people=array('name','sex','nation','birth');
foreach ($people as $mychrs)
    echo $mychrs." ";
sort($people);
echo "<br />---排序后---<br />";
foreach ($people as $mychrs)
    echo $mychrs." ";
?>


升序排序后的数组元素显示 为 birth name nation sex,当然,sort()函数是区分字母大小写的(字母从大到小的顺序是:A…Z…a…z)

Sort() 函数还具有第二参数,用来说明升序的规则是用来比较数字还是字符串的。比如:


<?php
echo "---按数字升序排序---<br />";
$num2=array('26','3',);
sort($num2,SORT_NUMERIC);
foreach ($num2 as $mychrs)
    echo $mychrs." ";

echo "<br />---按字符升序排序---<br />";
$num3=array('26','3');
sort($num3,SORT_STRING);
foreach ($num3 as $mychrs)
    echo $mychrs." ";
?>


SORT_NUMERIC 和SORT_STRING用来声明按数字或字符的升序排列。如果按照数字升序排列是:3,26;但如果按照字符升序排列则是:26,3了。

PHP 中除了升序函数以外,还有降序或称反向排列的函数 ,就是rsort()函数 ,比 如:


$num1=range(1,9);
rsort($num1);


这 里其实就相当于range(9,1)

3,PHP中关联数组的排序

PHP除了支持数字 索引数组以外,还支持相关数组。比如如下数组就是一个相关(关联)数组


$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');


使 用sort($peoples)默认即是按照元素定义值的升序排序,在关联数组中可使用asort()函数表示,关联数组中最主要的则是可按照关键字(如 xm、xb、mz等)的升序排序,该方法是用函数ksort()函数。


<?php
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');
foreach ($peoples as $mychrs)
    echo $mychrs." ";

echo "<br />--按元素值升序排列--<br />";
asort($peoples);
foreach ($peoples as $mychrs)
    echo $mychrs." ";

echo "<br />--按关键字升序排列--<br />";
ksort($peoples);
foreach ($peoples as $mychrs)
    echo $mychrs." ";
?>


和 常规数组拥有sort()升序函数的反向排序rsort()降序函数相对应的,关联数组也有对应的降序函数:asort()函数和arsort()函数、 ksort()函数和krsort()函数。

记忆:原型函数是sort(),其中a、k表示关联数组相关必须前置,反向 排序使用r修饰。

4,PHP数组元素随机排序

PHP中使用shuffle() 函数 将数组元素进行随机的重新排序,比如:


<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
shuffle($fer);

foreach ($fer as $mychrs)
echo $mychrs." ";
?>


每 次都会显示不同的排序组合

5,PHP数组按原顺序反向排序

PHP中可使用array_reverse() 函数 将数组元素按原顺序反向排序。比如:


<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
foreach ($fer as $mychrs)
echo $mychrs." ";

$fer=array_reverse($fer);
echo "<br />--按原顺序反向--<br />";
foreach ($fer as $mychrs)
echo $mychrs." ";
?>


cnbruce cnrose cnjames cnanne
--按原顺序反向--
cnanne cnjames cnrose cnbruce

注 意这里的 $fer=array_reverse($fer); 在此之前的任何排序函数均只是声明引用,并没有对原有数组进行重新定义,但当我调试该函数时则需要重新定义。这是因为array_reverse()是返 回原数组修改后的副本,如果不需要原有数组,可对原数组重新定义达到覆盖的目的,否则就另外定义数组保存副本,比 如:$fer_bak=array_reverse($fer);

分享到:
评论

相关推荐

    PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

    PHP提供了多种内置函数用于数组的排序,包括sort、asort、rsort、krsort和ksort。这些函数各自有不同的特性和用途,下面将详细介绍它们的区别。 1. sort() sort()函数用于对数组中的元素进行升序(从小到大)排序。...

    PHP数组排序之sort、asort与ksort用法实例

    本文实例讲解了PHP数组排序中sort、asort与ksort的用法,供大家参考借鉴之用。具体实例如下所示: &lt;?php $arr = array('d'=&gt;'sdf', 'r'=&gt;'sdf', 'a'=&gt; 'eee'); //sort($arr); // 对数组的值进行重排, 删除之前的...

    PHP数组排序函数合集 以及它们之间的联系分析

    `arsort()` 与 `asort()` 类似,但它是按值降序排序关联数组,同时保持键值对的对应关系。 ```php $fruits = array("d" =&gt; "lemon", "a" =&gt; "orange", "b" =&gt; "banana", "c" =&gt; "apple"); arsort($fruits); var_...

    2024年 php sort面试题目

    - **asort()**, **arsort()**, **ksort()**, **krsort()**: 稳定排序。 - **sort()**, **rsort()**: 不稳定排序。 #### 五、多维数组的排序 **5.1 使用 array_multisort()** - **array_multisort()**: 可以根据一...

    php排序php排序php排序php排序

    在处理关联数组时,`asort()`和`arsort()`可以基于值进行排序,这在显示数据时特别有用,例如按照国家名的字母顺序显示国家列表。 了解这些基本的排序函数是PHP编程中的一项重要技能,它们可以帮助开发人员更有效地...

    PHP程序设计-3期(KC016) 2.7.4 数组操作(排序)常见问题.docx

    PHP提供了多种内置的数组排序函数,如`sort()`, `rsort()`, `asort()`, `arsort()`, `ksort()`, `krsort()`, `usort()`, `uasort()`, 和 `uksort()`等。初学者容易混淆这些函数的名称,导致排序失败。确保正确使用...

    常用PHP数组排序函数归纳

     •asort() – 根据值,以升序对关联数组进行排序  •ksort() – 根据键,以升序对关联数组进行排序  •arsort() – 根据值,以降序对关联数组进行排序  •krsort() – 根据键,以降序对关联数组进行排序  ...

    phperphperphper

    2. **asort()**:按值对关联数组进行升序排序,保持键值对应关系。 3. **ksort()**:按键对关联数组进行升序排序。 4. **arsort()**:按值对关联数组进行降序排序,保持键值对应关系。 5. **krsort()**:按键对关联...

    PHP数组排序及运用场景.md

    如果数组包含键值对,并且需要根据值或键进行排序,则可以使用 `asort()`、`arsort()`、`ksort()` 或 `krsort()` 函数。例如,在电子商务网站中,可以使用 `asort()` 来根据价格对商品进行排序。 ##### 3. 自定义...

    php-使用php开发的排序算法之ArrayKeysSort-排序算法实现.zip

    在讨论`ArrayKeysSort`之前,我们先了解PHP的一些内置排序函数,如`sort()`、`rsort()`、`asort()`、`arsort()`、`ksort()`和`krsort()`。这些函数分别用于对数组的值进行升序、降序排序,或对键进行升序和降序排序...

    php通过ksort()函数给关联数组按照键排序的方法

    除了`ksort()`和`krsort()`,PHP还提供了其他数组排序函数,如`asort()`(按值升序排序关联数组,保持键值对应关系)、`arsort()`(按值降序排序关联数组,保持键值对应关系)、`sort()`(按值升序排序索引数组)和`...

    PHP程序设计-3期(KC016) 2.7.4 数组操作(排序)课后习题.doc

    - `asort()`:对关联数组进行升序排序,保持键值关联。 - `arsort()`:对关联数组进行降序排序,保持键值关联。 - `ksort()`:根据关联数组的键进行升序排序。 - `krsort()`:根据关联数组的键进行降序排序。 - `...

    php处理二维数组(去除重复项,排序,转换,去空白等)

    `asort()` 和 `arsort()` 函数 这两个函数同样进行升序或降序排序,但它们保持了元素原有的键名。 ```php $a = ['a' =&gt; 1, 2]; asort($a); // 升序排序并保持键名 printr($a); arsort($a); // 降序排序并保持键名...

    PHP 数组的常用函数

    - `asort()`: 对关联数组按值进行升序排序,保留键。 - `arsort()`: 对关联数组按值进行降序排序,保留键。 - `ksort()`: 对关联数组按键进行升序排序。 - `krsort()`: 对关联数组按键进行降序排序。 8. 搜索数组 -...

    php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】

    - `asort()` 保留键的同时按值升序排序。 - `arsort()` 保留键的同时按值降序排序。 - `ksort()` 按键升序排序。 - `krsort()` 按键降序排序。 - `usort()` 用户自定义排序函数。 - `uasort()` 保留键的用户...

    PHP下对数组进行排序的函数

    如果需要根据值而不是键进行排序,可以使用`asort()`和`arsort()`函数。`asort()`对数组值进行升序排序,同时保持键值对的关系。 ```php $data = array("US" =&gt; "United States", "IN" =&gt; "India", "DE" =&gt; ...

Global site tag (gtag.js) - Google Analytics