First loop
$v = $a[0];
$v = $a[1];
$v = $a[2];
$v = $a[3];
Yes! Current $v = $a[3] position.
Second loop
$a[3] = $v = $a[0], echo $v; // same as $a[3] and $a[0] == 'zero'
$a[3] = $v = $a[1], echo $v; // same as $a[3] and $a[1] == 'one'
$a[3] = $v = $a[2], echo $v; // same as $a[3] and $a[2] == 'two'
$a[3] = $v = $a[3], echo $v; // same as $a[3] and $a[3] == 'two'
because $a[3] is assigned by before processing.