PHP按二维数组中的某个值重新排序数组 usort的使用方法

$arr[0] = [‘aa‘=>123,‘bb‘=>‘abc‘];
$arr[1] = [‘aa‘=>456,‘bb‘=>‘dfe‘];
usort($arr,ss(‘aa‘));
function ss($key){
    return function ($a,$b) use ($key) {
        return $a[$key] < $b[$key];     //通过改变大于、小于来正向反向排序
    };
}
var_dump($arr);

/*
* 结果
array (size=2)
  0 =>
    array (size=2)
      ‘aa‘ => int 456
      ‘bb‘ => string ‘dfe‘ (length=3)
  1 =>
    array (size=2)
      ‘aa‘ => int 123
      ‘bb‘ => string ‘abc‘ (length=3)
*/
<?php

$arr = array(
    0 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘语文‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘142‘),
    1 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘数学‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘98‘),
    2 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘英语‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘118‘),
    3 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘化学‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘78‘),
    4 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘物理‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘132‘),
    5 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘生物‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘115‘),
    6 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘地理‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘99‘),
    7 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘历史‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘88‘),
    8 => array(‘id‘ => ‘2014347856‘, ‘name‘ => ‘张甜‘, ‘科目‘ => ‘政治‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘125‘),
    9 => array(‘id‘ => ‘2014347880‘, ‘name‘ => ‘李鸣‘, ‘科目‘ => ‘语文‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘79‘),
    10 => array(‘id‘ => ‘2014347880‘, ‘name‘ => ‘李鸣‘, ‘科目‘ => ‘数学‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘148‘),
    11 => array(‘id‘ => ‘2014347880‘, ‘name‘ => ‘李鸣‘, ‘科目‘ => ‘英语‘, ‘tag‘ => ‘期中考试‘, ‘成绩‘ => ‘142‘),
);
/*自定义排序*/
function userSort($a, $b)
{
    if ($a[‘name‘] == $b[‘name‘]) {
        /*排序科目*/
        $subjectSort = array(‘语文‘, ‘数学‘, ‘英语‘, ‘历史‘, ‘政治‘, ‘地理‘, ‘物理‘, ‘化学‘, ‘生物‘);
        foreach ($subjectSort as $index => $item) {
            if ($a[‘科目‘] == $item) {
                $tmp1 = $index;
            }
            if ($b[‘科目‘] == $item) {
                $tmp2 = $index;
            }
        }

        return $tmp1 < $tmp2 ? -1 : 1;
    } else {
        /*排序name*/
        $tmpArr = array($a[‘name‘], $b[‘name‘]);
        sort($tmpArr);

        return $a[‘name‘] == $tmpArr[0] ? -1 : 1;
    }
}

usort($arr, ‘userSort‘);

var_dump($arr);

原文地址:https://www.cnblogs.com/phpfensi/p/9017809.html

时间: 2024-10-03 17:22:59

PHP按二维数组中的某个值重新排序数组 usort的使用方法的相关文章

PHP 将二维数组中某列值作为数组的键名

$priceArr = array_column($priceArr, null, 'id');//把id当作key值直接获取即可 原文地址:https://www.cnblogs.com/ghjbk/p/12198197.html

冒泡排序--通过冒泡算法让数组中最大的值成为数组中最后一个值

var nums = [];//定义一个空数组 for(var i=0;i<5;i++){//要用户输入五个数字,就循环5次 nums[i] = parseInt(prompt('请输入数字'));//使用for循环,prompt提示的方法提示用户输入数字 } console.log('用户输入的是:'); console.log(nums);//打印出用户输入的全部数字 for(var i=0;i<nums.length-1;i++){ for(var j=0;j<nums.lengt

二维坐标轴中绘三维图形

代码部分 CRect rect; GetClientRect(rect);  pDC->SetMapMode(MM_ANISOTROPIC);  pDC->SetWindowExt(rect.Width(), rect.Height());  pDC->SetViewportExt(rect.Width(), -rect.Height());  pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2); CRect rect1(CPo

二维码生成,二维码中嵌套图片,文字生成图片

package com.fh.util; import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream; import javax.

PHP检测数组中的每个值是否含有特殊字符

本文出至:新太潮流网络博客 /** * [TestArray 检测数组是一维还是二维] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn * @param [type] $array [数组] */ function TestArray($array){ if(is_array($array)){ foreach($array as $v){ if(is_array($v)){ $Int_A

js去除数组中的重复值

hasOwnProperty(property) 方法 JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数object是必选项.一个对象的实例.proName是必选项.一个属性名称的字符串值. 如果 object 具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回 true:反之则返回 false.此方法无法检查该对

javascript如何去掉数组中重复的值

javascript如何去掉数组中重复的值: 数组是用来组织数据的,有时候里面的数据是重复的,下面就介绍一下如何从数组中删除重复的内容. 代码实例如下: var theArray=[1,2,3,4,5,6,4,3,10]; function unique(data){ var data=data||[]; var a={}; for(var i=0;i<data.length;i++){ var v=data[i]; if(typeof(a[v])=='undefined'){ a[v]=1;

去掉有序数组中重复数字 原地 leetcode java (最简单的方法)

1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with consta

JavaScript去除数组中的重复值

用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过程中,就会为其创建一个 prototype 的属性.在未加其他附带条件情况下,所有的 prototype 属性都会自动获取 constractor 属性,constructor 内包含一个指向 prototype 属性所属函数的指针(就是说 constructor 回指构造函数本身).静乐县隗承五金