What is the real question you are asking?
PHP code in a PHP application is one component, loop or no loop.
So it seems your real question is:
1 Query (with a join) vs. Multiple queries.
1 Query will always be faster and more efficient than multiple, unless there is something very wrong/unoptimized with the query.
With that said, when you have static related tables, then having those tables cached can save you having to join the tables or do queries in a loop. As the result set will have to be "hydrated/expanded" within your PHP script to make use of those, or at least resolve the values you need from the cached lookup table, the complexity of adding all that code isn't often worth the pain, and might not even be more efficient in the long run, given a PHP script's short lifespan.
What is certainly worth looking at, is the addition of a relational result cache like memcached or redis.