Get a custom table to an array

$wpdb->get_results(); has a second parameter for the return format:

/**
 * Retrieve an entire SQL result set from the database (i.e., many rows)
 *
 * Executes a SQL query and returns the entire SQL result.
 *
 * @since 0.71
 *
 * @param string $query SQL query.
 * @param string $output Optional. 
 * Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. 
 * With one of the first three, return an array of rows indexed from 0 by SQL 
 * result row number.
 *  Each row is an associative array (column => value, ...), a numerically 
 *      indexed array (0 => value, ...), or an object. ( ->column = value ), 
 *      respectively.
 *  With OBJECT_K, return an associative array of row objects keyed by the 
 *      value of each row's first column's value. Duplicate keys are discarded.
 * @return mixed Database query results
 */
function get_results( $query = null, $output = OBJECT ) {

So this will return an array:

$result = $wpdb->get_results( $sql, ARRAY_A );