【发布时间】:2020-08-04 03:29:25
【问题描述】:
我最近在一个废弃的 PHP 代码项目中遇到了以下构造:
while(($my_var = mt_rand(3, 6))%2 != 0);
(注意循环的空主体)。这确保 $my_var 被分配了数字 4 或数字 6。
使用上述结构是否有任何(可衡量的、客观的)优势,而不是像
$my_var = mt_rand(2, 3) * 2;
(我特别想知道,如果结果必须是偶数,为什么作者选择在随机化范围内包含 3。)
【问题讨论】:
-
对于这样一个简单的 if/else 结果,该代码看起来完全不可读和神秘......所以不,我认为它没有优势(代码可读性也很重要!)
-
第一个版本也有缺点,你无法真正预测它会迭代多少次。它可以(理论上)“掷骰子”并在前十、一百或一千次迭代中得出 5 个……甚至永远不会结束。 (mt_rand 的实现可能已经足够好,不会发生这种情况,但仍然如此。)
-
@CBroe 如果您将此作为回复发布,我愿意接受。
标签: php random while-loop variable-assignment