while (1) {

$flag = 1, last if (適当);

}

上記のコードを実行するとifでtrueになったときに
whileを抜けて、そのときに$flagがセットされますが、
どうしてそのようになるのか理解できません

last if ()の時点でループを抜けてしまい
$flag=1は評価されないような気がするのですが、
一体何が起こっているのでしょうか?