数组函数

PHP array_multisort() 函数

主题:PHP 数组参考上一页|下一页

说明

array_multisort() 函数一次对多个数组或多维数组进行一维或多维排序。 排序就像数组是表中的列一样进行。

关联键或字符串键将被保留,但数字键将被重新索引。

下表总结了该函数的技术细节。

返回值: 成功返回TRUE,失败返回FALSE
变更日志:

在 PHP 5.4.0 中添加了排序标志 SORT_NATURALSORT_FLAG_CASE

在 PHP 5.3.0 中添加了排序标志 SORT_LOCALE_STRING
版本: PHP 4+

语法

array_multisort() 函数的基本语法如下:

array_multisort(array1, array1_sort_order, array1_sort_flags, ...)

下面的例子展示了 array_multisort() 函数的作用。

<?php
// 样本数组
$array1 = array(2, 7, 10, 5);
$array2 = array(4, 3, 1, 2);

// 对多个数组进行排序
array_multisort($array1, $array2);
print_r($array1);
print_r($array2);
?>

提示:第一个数组是主要的排序依据; 其他数组中的所有项目都根据第一个数组的排序顺序重新排序(即,数组被视为表的列)。 如果第一个数组中的项目比较相等,则排序顺序由第二个数组确定,依此类推。

在上面的示例中,排序后的第一个数组将包含 2、5、7、10,第二个数组将包含 4、2、3、1。请注意,第二个数组中的条目对应于第一个数组中的条目。 为了更好地理解这一点,让我们仔细看看下面的插图。

     array1 | array2
    --------+--------
        2   |      4
        7   |      3
        10  |      1
        5   |      2
 
 array1 | array2
--------+--------
    2   |      4
    5   |      2
    7   |      3
    10  |      1
     Before Sorting    After Sorting

参数

array_multisort() 函数接受以下参数。

参数 说明
array1 必填。 指定要排序的数组。
array1_sort_order

可选。 指定排序顺序。 可能的值是:

  • SORT_ASC – 按升序 (A-Z) 排序。 默认值。
  • SORT_DESC – 按降序排列 (Z-A)。
array1_sort_flags

可选。 指定应如何比较数组项。 可能的值是:

  • SORT_REGULAR – 正常比较项目(不要更改类型)。 默认值。
  • SORT_NUMERIC – 用数字比较项目。
  • SORT_STRING – 将项目作为字符串进行比较。
  • SORT_LOCALE_STRING – 根据当前语言环境将项目作为字符串进行比较。
  • SORT_NATURAL – 使用"自然排序"算法将项目作为字符串进行比较,例如 PHP natsort() 函数。
  • SORT_FLAG_CASE – 可以与 SORT_STRINGSORT_NATURAL 组合(按位或)对字符串进行不区分大小写的排序。
... 可选。 指定要排序的更多数组,可选地后跟排序顺序和标志。 仅比较与先前数组中等效元素相对应的元素。

更多示例

这里有更多示例展示了 array_multisort() 函数的基本工作原理:

以下示例展示了如何使用此函数对多维数组进行排序。

<?php
// 样本数组
$array = array(
    array("10", 11, 100, 100, "a"),
    array(1, 4, "2", 5, 3)
);

// 对多维数组进行排序
array_multisort($array[0], SORT_STRING, $array[1], SORT_DESC, SORT_NUMERIC);
print_r($array);
?>
Advertisements