while循环具有一个空正文和条件中的一个赋值



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


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

(注意循环的空正文(。这样可以确保$my_var被指定为数字4或数字6。

使用上述结构是否比有任何(可衡量的、客观的(优势

$my_var = mt_rand(2, 3) * 2;

(我特别想知道,如果结果必须是偶数,为什么作者选择将3纳入随机化范围。(

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

这样可以确保$my_var被指定为数字4或数字6。

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

它还有一个缺点,你不能真正预测它会迭代多少次。

它可以(理论上("掷骰子",在前十次、一百次或一千次迭代中得出5。。。甚至永远不会结束。(mt_rand的实现可能足够好,不会发生这种情况,但仍然如此。(

最新更新