I really like it when my HTML is perfectly indented.
Same thing with my PHP.
I will show you how to do both in the same script.
Although some people don't like them, I like the standard loops and ?> and <?php tags.
To have perfect indentation with both the HTML and PHP code, some rules have to be followed.
An interesting fact about the ?> tag is that PHP will eat the following newline.
So if your opening PHP tag (<?php) starts the line, the block will not leave anything in the HTML.
I like to think that there are two parallel indentations in every PHP script. The HTML indentation and the PHP indentation.
I also like to put the PHP indentation not before the <?php tag but after.
This way, <?php always starts a line and this prevents the echoed HTML from having weird spacing all over the place.
On every if/for/foreach, I indent the PHP.
In HTML, I follow other rules. I like it when some tags stay in the same line instead of having lots of indentation.
Like this :
<form><input /></form>
In PHP, I go like this :
<?php if (true): ?> <?php if (true): ?> <?php if (true): ?> <?php endif: ?> <?php endif: ?> <?php endif: ?>
Notice how every <?php tag starts the line. This means that they are all removed from the HTML.
When indenting my HTML code, I indent it like the PHP is not there.
Recently at work, I had to take a three level deep associative array and render in a grouped table with lots of rowspans.
It went like this :
<table border=1 cellpadding=5>
<?php foreach ($all as list($nom, $table)): $i = 0; ?>
	<tr>
		<th rowspan="<= htmlspecialchars(array_sum(array_map('count', $table))) ?>"><?= htmlspecialchars($nom) ?><th>
<?php	foreach ($table as $at => $ra): ?>
<?php		if ($i): ?>
	</tr>
	<tr>
<?php		endif; ?>
		<td rowspan="<= htmlspecialchars(count($ra)) ?>"><?= htmlspecialchars($at) ?><td>
<?php		foreach ($ra as $j => $r): ?>
<?php			if ($j): ?>
	</tr>
	<tr>
<?php			endif; ?>
		<td><?= htmlspecialchars($r) ?><td>
<?php		endforeach; ?>
<?php	++$i; endforeach; ?>
	</tr>
<?php endforeach; ?>
</table>
It may seem a little cahotic to the untrained eye, but everything here is exactly how I like it.
Not only is the PHP perfectly indented, but the generated HTML is also perfectly indented.