Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function f_parse_csv($file, $longest, $delimiter)
- {
- $mdarray = array();
- $file = fopen($file, "r");
- while ($line = fgetcsv($file, $longest, $delimiter))
- {
- array_push($mdarray, $line);
- }
- fclose($file);
- return $mdarray;
- }
- foreach ($mdarray as $key => $row) {
- $dates[$key] = $row[0];
- // of course, replace 0 with whatever is the date field's index
- }
- array_multisort($dates, SORT_DESC, $mdarray);
- class TableSorter {
- protected $column;
- function __construct($column) {
- $this->column = $column;
- }
- function sort($table) {
- usort($table, array($this, 'compare'));
- return $table;
- }
- function compare($a, $b) {
- if ($a[$this->column] == $b[$this->column]) {
- return 0;
- }
- return ($a[$this->column] < $b[$this->column]) ? -1 : 1;
- }
- }
- $sorter = new TableSorter(0); // sort by first column
- $mdarray = $sorter->sort($mdarray);
- function sort_multi_array ($array, $key)
- {
- $keys = array();
- for ($i=1;$i<func_num_args();$i++) {
- $keys[$i-1] = func_get_arg($i);
- }
- // create a custom search function to pass to usort
- $func = function ($a, $b) use ($keys) {
- for ($i=0;$i<count($keys);$i++) {
- if ($a[$keys[$i]] != $b[$keys[$i]]) {
- return ($a[$keys[$i]] < $b[$keys[$i]]) ? -1 : 1;
- }
- }
- return 0;
- };
- usort($array, $func);
- return $array;
- }
- // a sorter class
- // php4 and php5 compatible
- class Sorter {
- var $sort_fields;
- var $backwards = false;
- var $numeric = false;
- function sort() {
- $args = func_get_args();
- $array = $args[0];
- if (!$array) return array();
- $this->sort_fields = array_slice($args, 1);
- if (!$this->sort_fields) return $array();
- if ($this->numeric) {
- usort($array, array($this, 'numericCompare'));
- } else {
- usort($array, array($this, 'stringCompare'));
- }
- return $array;
- }
- function numericCompare($a, $b) {
- foreach($this->sort_fields as $sort_field) {
- if ($a[$sort_field] == $b[$sort_field]) {
- continue;
- }
- return ($a[$sort_field] < $b[$sort_field]) ? ($this->backwards ? 1 : -1) : ($this->backwards ? -1 : 1);
- }
- return 0;
- }
- function stringCompare($a, $b) {
- foreach($this->sort_fields as $sort_field) {
- $cmp_result = strcasecmp($a[$sort_field], $b[$sort_field]);
- if ($cmp_result == 0) continue;
- return ($this->backwards ? -$cmp_result : $cmp_result);
- }
- return 0;
- }
- }
- /////////////////////
- // usage examples
- // some starting data
- $start_data = array(
- array('first_name' => 'John', 'last_name' => 'Smith', 'age' => 10),
- array('first_name' => 'Joe', 'last_name' => 'Smith', 'age' => 11),
- array('first_name' => 'Jake', 'last_name' => 'Xample', 'age' => 9),
- );
- // sort by last_name, then first_name
- $sorter = new Sorter();
- print_r($sorter->sort($start_data, 'last_name', 'first_name'));
- // sort by first_name, then last_name
- $sorter = new Sorter();
- print_r($sorter->sort($start_data, 'first_name', 'last_name'));
- // sort by last_name, then first_name (backwards)
- $sorter = new Sorter();
- $sorter->backwards = true;
- print_r($sorter->sort($start_data, 'last_name', 'first_name'));
- // sort numerically by age
- $sorter = new Sorter();
- $sorter->numeric = true;
- print_r($sorter->sort($start_data, 'age'));
- function sort2d_bycolumn($array, $column, $method, $has_header)
- {
- if ($has_header) $header = array_shift($array);
- foreach ($array as $key => $row) {
- $narray[$key] = $row[$column];
- }
- array_multisort($narray, $method, $array);
- if ($has_header) array_unshift($array, $header);
- return $array;
- }
- <?php
- //sort multidimensional array by $order_in_category
- if (count ($in_cat_team_arr) > 0) {
- foreach ($in_cat_team_arr as $key => $row) {
- $order_in_category[$key] = $row[0];//[0] is $order_in_category
- }
- array_multisort($order_in_category, SORT_ASC, $in_cat_team_arr);
- }
- foreach ($in_cat_team_arr as $team_mem) {
- //loop through the sorted array here
- }
Add Comment
Please, Sign In to add comment