key = $key; $this->value = $value; } } $records = array(new record(1,1), new record(2,2), new record(3,3), new record(4,4), ); //radnomize array shuffle($records); //display var_dump($records); //get keys in an array $keys = array(); foreach ($records as $record) { $keys[] = $record->key; } //display var_dump($keys); //loop through 1 - N for ( $j = 1; $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)