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

来源:藏色散人 发布时间:2019-03-19 14:08:08 阅读量:943

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

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

方法:

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

PHP代码示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<?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);

输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

原始对象数组:

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
分享:
评论:
你还没有登录,请先