PHP 二维数组排序保持键名不变的方法

PHP 二维数组排序保持键名不变的方法

二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇
废话不多言,我们看个实例:

<?php
$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
 

 = array_column(, 'age'(, SORT_ASC, ();

PHP 二维数组排序保持键名不变的方法

细心的朋友会看到,键名重置了,键名从0开始,显然这可能不是我们想要的结果,那如何保持键名不变?

我们再看个示例:

$data = array(    1001 => array(        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(        'age' => 27,
        'name' => '乔帮主'
    )
);//根据字段age对数组$data进行降序排列$data = arraySort($data, "age", "desc" );print_r($data);/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array */function arraySort($arr, $keys, $type = 'asc')
{    $keysvalue = $new_array = array();    foreach ($arr as $k => $v) {        $keysvalue[$k] = $v[$keys];
    }    if ($type == 'asc') {        natsort($keysvalue);
    }    if ($type == 'desc') {        natsort($keysvalue);        $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变    }    foreach ($keysvalue as $k => $v) {        $new_array[$k] = $arr[$k];
    }    return $new_array;
}

这里我们也可以精简下arraySort函数,处理结果相同:

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array */function arraySort($arr, $keys, $type = 'asc')
{    $keysvalue = $new_array = array();    foreach ($arr as $k => $v) {        $keysvalue[$k] = $v[$keys];
    }    $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);    foreach ($keysvalue as $k => $v) {        $new_array[$k] = $arr[$k];
    }    return $new_array;
}

从上面的结果我们看到:
PHP 二维数组排序保持键名不变的方法

键名保持了不变,实现的原理很简单,先取出键名,然后对键名排序,再根据对应的键名赋值组成新数组返回。
大家可以看到,这里我们主要用到了php的几个核心的排序函数

asort() 对关联数组按照键值进行升序排序。

arsort()对关联数组按照键值进行降序排序。

natsort() 实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短的优先。数组的索引与单元值保持关联,
注意:在自然排序算法中,数字 2 小于 数字 10。在计算机排序算法中,10 小于 2,因为 "10" 中的第一个数字小于 2。

关于PHP 二维数组排序保持键名不变的方法的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/40800.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月16日 23:26
下一篇 2022年6月16日 23:26

相关推荐

  • 重蔚自留地php学习第45天——序列化-自定义自动加载-迭代

    回顾 面向对象三大特性 封装:隐藏数据实现,提供外部调用的方法 继承:实现代码的重用,提高效率 多态:方法的重载,PHP不支持多态   PHP继承:extends 如果一个类是用来被实例化的,那么尽可能的将内容私有…

    2019年1月11日 我php路线
    0366
  • PHP商城开发中实现客户数据管理的技术的探究

    随着互联网的发展和普及,电子商务已成为人们购物消费的主要方式。目前,电子商务平台也呈现出多样化和个性化的趋势,从线上商城到社交电商,再到无人超市和智能家居等,无不需要客户数据管理系统的支持。而在电商…

    2023年5月19日
    02
  • 通过php对微信动态传递参数的操作

    上篇文章https://www.cwhello.com/4585.html我们说到获取到微信分享这个动作。如果我们想动态传递参数怎么办?也就是说当页面信息wx.config配置好后我们突然又想重新赋值给$title等变量信息怎么办? 我们可以这样讲…

    2018年3月9日
    0218
  • 掌握PHP 爬取网页的主要方法

    主要流程就是获取整个网页,然后正则匹配(关键的)。PHP抓取页面的主要方法,有几种方法是网上前辈的经验,现在还没有用到的,先存下来以后试试。1.file()函数2.file_get_contents()函数3.fopen()->fread()->…

    2022年6月14日
    0135
  • 浅谈PHP中获取命令行参数的方法

    在PHP CLI 命令行中,有需要像网页的 GET 、 POST 一样为命令行脚本提供参数;那么如何获取这些命令行的参数呢?下面本篇文章就来带大家了解一下PHP中获取命令行参数的方法,介绍一下$argv变量和getopt()函数。$arg…

    2023年3月29日
    00
  • 解析PHP的可变变量与可变函数

    PHP的可变变量与可变函数什么叫可变。在程序世界中,可变的当然是变量。常量在定义之后都是不可变的,在程序执行过程中,这个常量都是不能修改的。但是变量却不同,它们可以修改。那么可变变量和可变函数又是什么意…

    2022年6月27日
    0122
  • PHP8.0中的调试工具:Blackfire

    随着网络应用的不断发展,开发人员们需要不断地学习和利用新的工具和技术以提高他们的开发效率和质量。其中,调试工具是重要的一环,它可以帮助开发人员更快地找到代码中的错误和性能问题。本文将介绍一款PHP8.0中…

    2023年5月18日
    01
  • PHP中如何进行AR和VR应用开发?

    在过去的几年中,增强现实(AR)和虚拟现实(VR)技术已经得到了广泛应用,为用户提供了更加真实的体验。这种技术被广泛运用于游戏、娱乐、教育和医疗等领域。PHP是一门流行的Web开发语言,被广泛用于应用程序的开…

    2023年5月17日
    08

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息