while 循环,主体为空,条件中有赋值

while-loop with an empty body and an assignment in the condition

我最近在一个废弃的 PHP 代码项目中遇到了以下构造:


while(($my_var = mt_rand(3, 6))%2 != 0);

(注意循环体是空的)。这确保为 $my_var 分配数字 4 或数字 6。

相比,使用上述结构是否有任何(可衡量的,objective)优势
$my_var = mt_rand(2, 3) * 2;

(我特别想知道为什么作者选择在随机范围内包括3,如果结果必须是均匀的。)

while(($my_var = mt_rand(3, 6))%2 != 0);

This ensures that $my_var is assigned either the number 4 or the number 6.

正如@Oli 在评论中提到的,这非常复杂且难以阅读。

它也有缺点,你无法真正预测它会迭代多少次。

它可以(理论上)“掷骰子”并在前 10、100 或 1000 次迭代中得出 5……甚至永远不会结束。 (mt_rand 的实施可能足够好,不会发生这种情况,但仍然会发生。)