Easiest way to alternate row colors in PHP/HTML?

Fundamentally - no. That's about as easy as it gets. You might rewrite it a bit shorter/cleaner, but the idea will be the same. This is how I would write it:

$c = true; // Let's not forget to initialize our variables, shall we?
foreach($posts as $post)
    echo '<div'.(($c = !$c)?' class="odd"':'').">$post</div>";

If you'd like to have less in-line PHP, a great way of doing it is via JavaScript.

Using jQuery, it's simply:

<script type="text/javascript">
$('div:odd').css('background-color', 'red');
</script>

Using CSS3 you can do something like this:

div:nth-child(odd)
{
  background-color: red
}

But better not use that for a few years if you actually want your users to see the color...


Smarty has it inbuilt:

{section name=rows loop=$data}
<tr class="{cycle values="odd,even"}">
   <td>{$data[rows]}</td>
</tr>
{/section}

So does Django:

{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}