今日、職場で、理解できないコード行に行き詰まりました。私は 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 の式とステートメントに関する重要なヒントがあるかどうか疑問に思っています。
アドバイス: 「適切に構成された」ループを作成してコードを修正したくありません。解決策は明らかです。ここで何が起こっているのかを理解したいと思っています。すべての助けに感謝します。