`

对一维数组中某一个或多个键值进行排序,类似数据表的排序

    博客分类:
  • PHP
 
阅读更多

假如有个一维数组为:

 

$array = array(
	0 => array(
    	'id' => 1,
        'sort' => 3,
        'times' => 34,
    ),
   	1 => array(
    	'id' => 2,
        'sort' => 23,
        'times' => 23,
    ),
   	2 => array(
    	'id' => 8,
        'sort' => 3,
        'times' => 32,
    ),
   	3 => array(
    	'id' => 5,
        'sort' => 54,
        'times' => 12,
    ),
   	4 => array(
    	'id' => 4,
        'sort' => 11,
        'times' => 22,
    ),
   	5 => array(
    	'id' => 6,
        'sort' => 22,
        'times' => 34,
    ),
   	6 => array(
    	'id' => 9,
        'sort' => 23,
        'times' => 56,
    ),
);
 

 

然后对这数组首先按 sort 降序排序,接着在相同sort值得情况下按id升序排序,以下有两种方法:

  方法一:利用for循环进行对第二个键值进行排序,如果用于几十万的数据效率不高,不推荐用在数据量大的数组里;

 

	//根据数组某个键值所对应的值来排序
    //这里$array数组先按sort降序排序,接着在相同sort值得情况下按id升序排序
    $orderArr = array();
    foreach($array as $key=>$val) {
        $orderArr[$key]['sort'] = $val['sort'];
    }

    array_multisort($orderArr, SORT_DESC, $array);  //对数组进行sort降序排序

    for($i = 0; $i < count($array) - 1; $i++)
    {
        for($j = $i; $j < count($array); $j++)
        {
            if($array[$i]['sort'] == $array[$j]['sort'] && $array[$i]['id'] > $array[$j]['id'])
            {
                $temp = array();
                $temp = $array[$i];
                $array[$i] = $array[$j];
                $array[$j] = $temp;
            }
        }
    }

    print_r($array);

 

方法二:利用array()本身自带的函数进行排序,效率比上个高的多,可以用于几十万以上的数据处理;强烈推荐使用这种

 

	//根据数组某个键值所对应的值来排序
    //这里$array数组先按sort降序排序,接着在相同sort值得情况下按id升序排序
    $orderArr = array();
    foreach($array as $key=>$val) {
        $orderArr[$key]['sort'] = $val['sort'];
    }

    array_multisort($orderArr, SORT_DESC, $array, SORT_DESC);  //对数组进行sort降序排序,然后再对数组中的第一个键值的数值(id)进行升序排序;如果想sort排序完后接着按times排序,就应该将times设为数组的第一个键值

    print_r($array);
 

 

打印结果:

 

Array
(
    [0] => Array
        (
            [id] => 5
            [sort] => 54
            [times] => 12
        )

    [1] => Array
        (
            [id] => 9
            [sort] => 23
            [times] => 56
        )

    [2] => Array
        (
            [id] => 2
            [sort] => 23
            [times] => 23
        )

    [3] => Array
        (
            [id] => 6
            [sort] => 22
            [times] => 34
        )

    [4] => Array
        (
            [id] => 4
            [sort] => 11
            [times] => 22
        )

    [5] => Array
        (
            [id] => 1
            [sort] => 3
            [times] => 34
        )

    [6] => Array
        (
            [id] => 8
            [sort] => 3
            [times] => 32
        )
)
分享到:
评论

相关推荐

    php对二维数组按指定键值key排序示例代码

    首先,PHP中有一个内置函数array_multisort(),该函数能够一次对多个数组进行排序,或者根据一维或多维对多维数组进行排序。在使用array_multisort()函数时,关联键名会保持不变,但数字键名会被重新索引。需要注意...

    PHP按指定键值对二维数组进行排序的方法

    在处理二维数组时,如果我们想根据其中的一个或多个键值进行排序,`array_multisort()`可以很好地完成这项工作。 在给定的示例中,我们有一个包含四个元素的二维数组,每个元素都是一个关联数组,包含'id'和'price'...

    PHP 多维数组的排序问题 根据二维数组中某个项排序

    该函数可以对多个数组或数组中的多个列进行排序,适用于需要根据多个标准对数组元素进行排序的场景。 首先,我们来详细说明array_multisort函数的用法。该函数允许开发者将一个或多个数组作为参数,并按照指定的...

    易语言-json_ksort 二维数组键值排序

    本知识点主要聚焦于易语言中的一个特定功能——json_ksort,它涉及到二维数组的键值排序。下面将详细阐述易语言处理JSON数据以及ksort函数的工作原理和应用。 首先,JSON(JavaScript Object Notation)是一种轻量...

    php一维二维数组键排序方法实例总结

    接下来是使用array_multisort()函数对二维数组进行排序,这是PHP中非常强大的数组排序函数,它可以同时对多个数组进行排序,或者根据某一列或多列的值对一维数组或二维数组进行排序。它非常适合复杂的排序操作,比如...

    CStringArray二维数组

    `CMapWordToPtr` 是 MFC 提供的一个关联容器,它可以用来存储键值对。在这个例子中,键是整数,值是指向 `CStringArray` 的指针。通过这种方法,可以在运行时动态地存储和检索多个 `CStringArray` 对象。 ### 三、...

    php二维数组按某个键值排序的实例讲解

    `array_multisort`函数则用于根据一个或多个排序数组对多个数组或单一数组的列进行排序。该函数原型如下: ```php array_multisort(array &$array1, mixed $array1_sort_flags = SORT_ASC, mixed $array1_sort_...

    php多维数组转化为一维数组并重组源码

    在某些情况下,我们可能还需要对一维数组进行重组,比如根据特定键值重新排序或组合。例如,如果我们想按照`name`字段对上面的示例数组进行排序,可以使用`usort`函数: ```php function sortByName($a, $b) { ...

    php二维数组排序

    它可以用来根据多个键值对一个或多维数组进行排序。 **语法格式**: ```php array_multisort(array $array1, int $sort_flags1, array $array2 = null, int $sort_flags2 = SORT_REGULAR, ..., array &$result_...

    PHP排序之二维数组的按照字母排序实现代码

    本文将详细介绍如何在PHP中对二维数组按照字母顺序进行排序,并提供了相应的代码示例。 首先,我们需要理解二维数组的概念。在PHP中,二维数组是由数组构成的数组,可以形象地想象成一个表格,其中每个数组元素都是...

    php 删除一维数组中某一个值元素的操作方法

    `array_diff`比较两个或多个数组并返回只存在于第一个数组中的元素。 ```php $arr = array_merge(array_diff($arr, array($tmp))); var_dump($arr); ``` 4. **最佳实践:`array_diff`与`array_merge`结合**: ...

    php对二维数组进行排序的简单实例

    这个函数特别有用,因为它可以根据多个键值对数组进行排序,同时支持升序(SORT_ASC)和降序(SORT_DESC)排列。 以下是一个简单的二维数组排序实例: ```php /** * PHP二维数组排序 * edit www.jb51.net */ $...

    PHP二维数组排序的3种方法和自定义函数分享

    首先,我们要理解二维数组的概念,它是由多个一维数组组成的,可以理解为表格或矩阵的形式,其中每个元素又包含一个或多个键值对。 一、PHP自带的`array_multisort`函数排序 `array_multisort`是PHP提供的一种多维...

    PHP程序设计-3期(KC016) 3.1.1二维数组拓展知识.doc

    在PHP编程语言中,二维数组是一种非常常见的数据结构,它由多个一维数组组成,可以用来存储复杂的、具有层次关系的数据。本节我们将深入探讨PHP中的二维数组,以及如何进行遍历和操作。 首先,让我们定义一个二维...

    详解PHP 二维数组排序保持键名不变

    二维数组是由多个一维数组构成的,其中每个一维数组可以看作是数组的一个元素。在对二维数组进行排序时,如果希望排序后仍保持原有的键名(索引)不变,这是一个相对复杂的操作。在PHP中,原始的`sort()`, `rsort()`...

    php自定义函数实现二维数组排序功能

    二维数组是由多个一维数组组成的,每个一维数组可以看作是数组的一个元素,这些元素通常具有相同的结构,即每个元素都包含相同数量和类型的键值对。在某些情况下,我们需要对二维数组进行排序,例如按照特定键值的...

    E4A易安卓视频教程源码: - 06、数组和集合.rar

    例如,一维数组常用来存储线性数据,如一系列数字或字符串;而二维数组则可以模拟表格或矩阵,适用于游戏、数据分析等多种场景。理解数组的声明、初始化、访问和修改元素是学习E4A的基础。 集合是更灵活的数据结构...

    php实现给二维数组中所有一维数组添加值的方法

    本例中使用了两种方式向一维数组添加值,一种是直接在遍历过程中添加新元素和关联值,另一种是先计算当前数组的长度,然后在该长度索引处添加新元素,并赋值关联的值。 4. PHP数组操作的技巧:在PHP中操作数组时,...

Global site tag (gtag.js) - Google Analytics