El fallo de tu codigo original es que pones los 2 if seguidos, asi que primero entra en el primero, cambia el valor y cumple tambien el segundo. Si hubieses usado el else
Código PHP:
if($a=='a')
{
echo '<tr bgcolor="'.$color1.'">';
$a='b';
}
elseif($a=='b')
{
echo '<tr bgcolor="'.$color2.'">';
$a='a';
}
De esta forma solo ejecutaria un if.
Podrias tambien sustituir estos 2 ifs por el operador ternario:
Código PHP:
$color=($color==$color1)?$color2:$color1;
echo "<tr bgcolor=\"$color\">";