php 数组对象排序,PHP如何按对象字段对对象数组进行排序?(代码实例)

本篇文章就是将给大家介绍在PHP中,按对象字段对对象数组排序的实现方法。

1cd47649b8e72f204f835f023b714a40.png

给定一个对象数组,我们按对象和给定字段对数组排序。

方法:

usort()函数是PHP中内置的函数,用于使用给定的比较器函数对元素数组进行有条件的排序。usort()函数还可以用于按对象字段对对象数组排序。调用usort()函数,第一个参数作为对象数组,第二个参数作为比较器函数,必须在此基础上比较两个数组对象。

PHP代码示例:<?php

$gfg_array = array(

array(

'score' => '100',

'name' => 'Sam',

'subject' => 'Data Structures'

),

array(

'score' => '50',

'name' => 'Tanya',

'subject' => 'Advanced Algorithms'

),

array(

'score' => '75',

'name' => 'Jack',

'subject' => 'Distributed Computing'

)

);

class geekSchool {

var $score, $name, $subject;

public function geekSchool($data) {

$this->name = $data['name'];

$this->score = $data['score'];

$this->subject = $data['subject'];

}

}

function data2Object($data) {

$class_object = new geekSchool($data);

return $class_object;

}

function comparator($object1, $object2) {

return $object1->score > $object2->score;

}

$school_data = array_map('data2Object', $gfg_array);

print("原始对象数组:\n");

print_r($school_data);

usort($school_data, 'comparator');

print("\n对象数组排序:\n");

print_r($school_data);

输出:原始对象数组:

Array

(

[0] => geekSchool Object

(

[score] => 100

[name] => Sam

[subject] => Data Structures

)

[1] => geekSchool Object

(

[score] => 50

[name] => Tanya

[subject] => Advanced Algorithms

)

[2] => geekSchool Object

(

[score] => 75

[name] => Jack

[subject] => Distributed Computing

)

)

对象数组排序:

Array

(

[0] => geekSchool Object

(

[score] => 50

[name] => Tanya

[subject] => Advanced Algorithms

)

[1] => geekSchool Object

(

[score] => 75

[name] => Jack

[subject] => Distributed Computing

)

[2] => geekSchool Object

(

[score] => 100

[name] => Sam

[subject] => Data Structures

)

)

相关推荐:《PHP教程》

本篇文章就是关于在PHP中按对象字段对对象数组进行排序的方法介绍,简单易懂,希望对需要的朋友有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值