A heat pump will probably be a better choice than solar, depending on operating conditions. What temperature are you looking to maintain and will you use a solar blanket?
Solar panels should have a southern exposure and should be at least 50% of the surface area of your pool. So, you need to make sure first of all that you have the space and exposure for a proper installation.
You'll want to heat the pool during the day with a solar panel system. Operating at night, when it gets cooler out, will not provide any heat to your pool. It will instead cool off your water. Running during the day instead should provide a decent amount of heat, depending on the amount of solar panels you have and if you have a long enough period of sunlight to generate enough heat.
A Heat Pump will be more consistent heat and should work all year long. It is not as dependent on sunlight exposure and will provide heat on rainy days, or at nighttime.
In either case, you will want to use a solar (bubble) cover to retain the heat overnight.
AquaCal has sold thousands of heat pumps in and around Phoenix. You should also consider a heat and cool (we call ours the Ice Breaker) model, which will allow you to cool off your water during the hot summer months, where the "too hot" water can make it less enjoyable to use your pool.
Regarding the size, you can't get too large a heat pump. The larger, the more BTU's, the less it will run to maintain your water temp. Infloor return heads will increase the efficiency of heating your pool. But for a 12,000 gallon pool, 100,000 to 120,000 BTUs minimum should be sufficient.
Should you choose a heat pump, look for the BTU output, and COP (coefficiency of performance) which is a matter of the efficiency of the system. There is a national code, ARI Standard 1160, which requires that a heat pump be able to meet a minimum of 4.0 COP at 80 degrees water temperature, 50 degrees ambient air temperature, 63 % relative humidity. There are few heat pumps that meet this standard.
Listen to how quiet our Super Quiet models are.
http://aquacal.com/