`
xttan
  • 浏览: 1523 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

PHP数组排序

    博客分类:
  • PHP
阅读更多
<?php

function _key_compare($val1, $val2)
{
    return $val1 > $val2 ? 1 : ($val1 < $val2 ? -1 : 0);
}

function _array_compare($arr1, $arr2) {
    $keys = ['a','b','c'];  //需要比较的键
    foreach ($keys as $key) {
        $compare_val = _key_compare($arr1[$key], $arr2[$key]);
        if( $compare_val != 0) {
            return $compare_val;
        }
    }
    return 0;
}

$array = [
    [
        'a' => 'abcdef',
        'b' => '123456',
        'c' => 'TTYYUU',
    ],
    [
        'a' => 'bcedfg',
        'b' => '123456',
        'c' => 'YYUUKK',
    ],
    [
        'a' => 'abcdef',
        'b' => '789100',
        'c' => 'UUKKOO',
    ]
];

usort($array, '_array_campare');
var_dump($array);

//-----------------------------------------------------------------
//封装成类
$array = [
	[
		'a' => 'abcdef',
		'b' => '123456',
		'c' => 'TTYYUU',
	],
	[
		'a' => 'bcedfg',
		'b' => '123456',
		'c' => 'YYUUKK',
	],
	[
		'a' => 'abcdef',
		'b' => '789100',
		'c' => 'UUKKOO',
	],
];

class ArraySort {
	/**
	 * 排序的key
	 * @var array
	 */
	protected $keys = [];

	/**
	 * 构造函数
	 * @param array|string $keys 需要比较的键
	 */
	public function __construct($keys) {
		if (is_string($keys)) {
			$this->keys[] = $keys;
		} else {
			$this->keys = $keys;
		}
	}

	/**
	 * 执行排序
	 *
	 * @param  array $array
	 * @return
	 */
	public function sort($array) {
		var_dump($array);
		usort($array, [$this, "_array_compare"]);
		return $array;
	}

	/**
	 * 比较两个值的大小,字符串or数字
	 *
	 * @param  string|integer $val1 [description]
	 * @param  string|integer $val2 [description]
	 * @return integer
	 */
	private function _key_compare($val1, $val2) {
		return $val1 > $val2 ? 1 : ($val1 < $val2 ? -1 : 0);
	}

	/**
	 * 比较两个数组
	 *
	 * @param  array $arr1 [description]
	 * @param  array $arr2 [description]
	 * @return integer
	 */
	private function _array_compare($arr1, $arr2) {
		foreach ($this->keys as $key) {
			$compare_val = $this->_key_compare($arr1[$key], $arr2[$key]);
			if ($compare_val != 0) {
				return $compare_val;
			}
		}
		return 0;
	}
}

$arraySort = new ArraySort(['a', 'b', 'c']);
$array     = $arraySort->sort($array);

var_dump($array);

 

分享到:
评论

相关推荐

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

    总结来说,PHP数组排序函数为开发者提供了灵活多样的选择,通过掌握这些函数及其参数的不同组合,可以实现复杂且高效的数据排序操作。对于需要按照特定逻辑排序的场景,我们可以编写自定义比较函数,通过u参数来传递...

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

    ### PHP数组排序及运用场景详解 #### 一、PHP数组排序方法详解 PHP 提供了丰富的数组处理功能,其中数组排序是开发中最常用的功能之一。本文将详细介绍 PHP 中的数组排序函数及其应用场景。 ##### 1. `sort()` -...

    php数组排序

    #### 三、PHP数组排序的基本原理 排序算法是计算机科学中的基础部分,通常分为多种类型,如冒泡排序、选择排序、插入排序、快速排序等。本文介绍的是一种简单的冒泡排序算法。 - **冒泡排序**:它通过重复遍历要...

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

    PHP数组排序之sort、asort与ksort用法实例 PHP数组排序是PHP编程中的一种常见操作,排序算法是计算机科学中的一种基本算法。PHP提供了多种排序函数,如sort、asort、ksort等,这篇文章将通过插入排序、选择排序、...

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

    在PHP编程语言中,排序是处理数组数据时的常见任务,尤其在组织和展示信息时。PHP提供了多种内置函数来帮助开发人员对数组进行不同方式的排序,包括简单排序、根据关键字排序以及根据值排序。 1. **简单排序**: -...

    php 多维数组排序

    php 多维数组排序,应用php的多维数组排序函数

    php各种数组的排序算法

    ### PHP中的数组排序算法 在PHP编程中,对数组进行排序是常见的操作之一。本文将详细介绍几种常用的排序算法实现,并通过具体的PHP代码示例来帮助理解这些算法的工作原理。 #### 插入排序(Insertion Sort) 插入...

    PHP多维数组排序array详解

    首先,我们要理解PHP数组排序的核心函数`array_multisort()`。该函数能够对多个数组或多维数组进行排序,通过它可以实现复杂条件下的排序操作。`array_multisort()`函数接受一个或多个数组作为参数,并且可以接受...

    常用PHP数组排序函数归纳

    常用的PHP数组排序函数  •sort() – 以升序对数组排序  •rsort() – 以降序对数组排序  •asort() – 根据值,以升序对关联数组进行排序  •ksort() – 根据键,以升序对关联数组进行排序  •arsort() – ...

    多维数组让数组根据某个字段的大小排序

    #### 二、PHP中多维数组排序的实现方法 本例中,我们希望对一个多维数组按照其中一个字段(本例为`'norder'`)的值进行降序排序。具体步骤如下: 1. **初始化数组**: ```php $arr = array( array('name' =&gt; '...

    PHP 数组排序

    PHP 数组排序 数组中的元素可以按字母或数字顺序进行降序或升序排列。 PHP – 数组排序函数 在本章中,我们将一一介绍下列 PHP 数组排序函数: sort() – 对数组进行升序排列 rsort() – 对数组进行降序排列 a...

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

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

    PHP 数组排序方法总结 推荐收藏

    PHP数组排序是PHP开发中处理数据时常常会用到的功能,它能帮助开发者以特定的顺序整理数组元素。在本文中,我们主要通过几种不同的排序函数来了解PHP数组排序的方法。 首先,我们需要了解如何使用PHP创建数组。PHP...

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

    在处理PHP多维数组排序问题时,特别是根据二维数组中某个特定项进行排序的情况,有几种方法可以实现。其中一种有效的方法是使用PHP内置的array_multisort函数。该函数可以对多个数组或数组中的多个列进行排序,适用...

    php选择排序法实现数组排序实例分析_.docx

    PHP选择排序法实现数组排序实例分析 PHP 选择排序法是常用的数组排序算法之一,它通过比较数组中的元素,选择合适的元素进行交换,直到整个数组排序完成。在 PHP 中实现选择排序法可以使用以下步骤: 1. 首先,...

    多维数组排序

    对于多维数组排序,PHP提供了`usort()`、`uasort()`和`uksort()`函数,它们允许我们自定义排序规则。`usort()`用于按用户定义的比较函数对数组元素进行排序;`uasort()`则保持索引与值的关联性;而`uksort()`则是...

    php二维数组排序

    ### PHP 二维数组排序知识点详解 #### 一、概述 在 PHP 编程中,处理数据经常需要对数组进行排序,尤其是对二维数组的排序。本文档介绍了一种使用 `array_multisort()` 函数来实现多维数组排序的方法,并通过一个...

    php 二维数组按数组键值进行排序

    php对二维数组按数组键值进行排序 @param array $array 要排序的数组 @param string $key 排序依据字段 @param string $order 排序方式,0为降序,1为升序

Global site tag (gtag.js) - Google Analytics