今天在工作中,我被困在一行我无法理解的代码中。我在 JavaScript 中有一个函数,为了确保获得唯一的时间戳,我做了那个丑陋的循环:
var ts = +new Date();
while (ts === (ts = +new Date()));
我认为很清楚我们正在重新设置 ts 直到它的值变得不同。
但是当我尝试将函数迁移到 PHP 代码时 - 就像这样:
$ts = preg_replace('/^\d\.(\d+)\s(\d+)$/', '$2$1', microtime());
//regex extracts digits and re-positions them - ugly microtime :(
while ($ts === ($ts = preg_replace('/^\d\.(\d+)\s(\d+)$/', '$2$1', microtime())));
解释器进入无限循环。我所有的尝试似乎都表明 $ts 分配是在比较之前进行的,但我不明白为什么没有首先解决左侧表达式。我的 PHP 知识没有我的 JavaScript 知识那么大,所以我想知道是否有一些关于我泄露的 PHP 表达式和语句的关键提示。
建议:我不想通过制作“结构良好”的循环来修复我的代码——解决方案很明显——我很想了解这里发生了什么。非常感谢所有帮助。