I think I see where you're trying to go. I can tell you that your code here:
$spec_combine = array_merge($myrow[Specialty1],$myrow[Specialty2])
isn't going to work as you might think since $myrow[Specialty1] and $myrow[Specialty2] are not arrays (they're just elements of another array). And the end result is $spec_combine will become an array (which is why you're seeing PHP dump "Array" when you try printing that variable out).
Hmm...
This isn't the only way to do it, but its one that comes to me at this hour:
Run your query like you have it. Loop each record and take Specialty1 and Specialty2 and assign it to an array. Something like this:
$myarray = array();
... loop records ...
// where $SpecialtyX is the DB values
$myarray[count($myarray)] = $Specialty1;
$myarray[count($myarray)] = $Specialty2;
... end loop records ...
Then you end up with 1 array with all the available specialties. Now to sort it, you could just do the following:
sort($myarray);
If sort() doesn't work the way you like, check out the various sorting options available to PHP.
I'm not sure how your table setup looks, but it looks like you're bumping up against a table design issue. Like elements should be grouped together in the same field/table. If this was an option, you could then just query for one field and perform an order by on that field and you wouldn't have to write a lot of PHP support code...