Sort multidimensional array by multiple keys

前端 未结 7 740
挽巷
挽巷 2020-11-22 10:05

I\'m trying to sort a multidimensional array by multiple keys, and I have no idea where to start. I looked at uasort, but wasn\'t quite sure how to write a function for what

7条回答
  •  旧巷少年郎
    2020-11-22 10:23

    class Sort {
        private $actual_order = 'asc';
        private $actual_field = null;
    
        public function compare_arrays($array1, $array2) {
    
            if ($array1[$this->actual_field] == $array2[$this->actual_field]) {
                return 0;
            }
            elseif ($array1[$this->actual_field] > $array2[$this->actual_field]) {
                return ($this->actual_order == 'asc' ? 1 : -1);
            }
            else {
                return ($this->actual_order == 'asc' ? -1 : 1);
            }
    
        }
    
    
        public function order_array(&$array) {
    
            usort($array, array($this, 'compare_arrays'));
    
        }
    
    
        public function __construct ($field, $actual_order = 'asc') {
            $this->actual_field = $field;
            $this->actual_order = $actual_order;
        }
    
    }
    
    // use
    
    $sort = new Sort ("state");
    
    $sort->order_array($array);
    

提交回复
热议问题