key = $key; $this->value = $value; } } $records = array(1 => new record(1,1), 3 => new record(3,3), 2 => new record(2,2), 4 => new record(4,4), ); //display var_dump($records); //get keys in an array $keys = array(null); foreach ($records as $record) { $keys[] = $record->key; } //display var_dump($keys); //loop through 1 - N for ( $j = 2; $j <= count($records) ; $j++ ) { $i = $j - 1; $k = $keys[$j]; $r = $records[$j]; while ( $k >= $keys[$i] ) { $records[$i + 1] = $records[$i]; $i--; if ( $i <= 0 ) { break; } } $records[$i + 1] = $r; } //display output var_dump($records);