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