Ещё о list
Вообще list странная и слабодокументированная конструкция. Мало кто знает что можно сделать так:
$a = list ($b, $c) = array (1,2);
list ($a, $b) = list ($c, $d) = array(1,2);
и что будет если сделать вот так:
$a = array(1, 2);
list ($a[], $a[]) = $a;
Смею предположить, что во втором случае в массиве будет последовательность 1,2,2,1.
Про первый случай ничего не знаю, ни разу так не делал.
Комментарий для Улитка:
Правильный ответ :) В первом же случае list «пропустит» сквозь себя то, что стоит справа. То есть это эквивалетно
list ($a, $b) = array(1,2);
list ($c, $d) = array(1,2);
Именно поэтому работают примеры из документации вида
while (list ($key, $val) = each ($_POST))
{
}