Ordenar array de objetos por campos de objeto en PHP

Dada una array de objetos y la tarea es ordenar la array por objeto por campos dados.

Enfoque:
La función usort() es una función incorporada en PHP que se usa para ordenar la array de elementos condicionalmente con una función de comparación dada. La función usort() también se puede usar para ordenar una array de objetos por campo de objeto. Llame a la función usort() con el primer argumento como la array de objetos y el segundo argumento como la función de comparación sobre la base de la cual se debe realizar la comparación entre dos objetos de la array.

Ejemplo:

<?php
  
// PHP program to show sorting of 
// array of objects by object fields
  
// School Data array
$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 for encapsulating school data
class geekSchool {
      
    var $score, $name, $subject;
  
    // Constructor for class initialization
    public function geekSchool($data) {
        $this->name = $data['name'];
        $this->score = $data['score'];
        $this->subject = $data['subject'];
    }
}
  
// Function to convert array data to class object
function data2Object($data) {
    $class_object = new geekSchool($data);
    return $class_object;
}
  
// Comparator function used for comparator
// scores of two object/students
function comparator($object1, $object2) {
    return $object1->score > $object2->score;
}
  
// Generating array of objects
$school_data = array_map('data2Object', $gfg_array);
  
// Printing original object array data
print("Original object array:\n");
  
print_r($school_data);
  
// Sorting the class objects according 
// to their scores
usort($school_data, 'comparator');
  
// Printing sorted object array data
print("\nSorted object array:\n");
  
print_r($school_data);
  
?>
Producción:

Original object array:
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
        )

)

Sorted object array:
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
        )

)

Publicación traducida automáticamente

Artículo escrito por Harshit Saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *