次のmktimeは、最終エコーで異なる結果を生成します。
php > echo mktime(7, 36, 0);
1406842560
php > echo mktime(7, 60 * 0.6, 0);
1406842560
php > echo mktime(7, 60 * ( 7.6 - 7.0 ), 0);
1406842500
この分パラメーターは各mktimeで36であり、(int)とintvalを使用してキャストし、DateTimeオブジェクトのsetTime関数を使用してみましたが、まったく同じ結果になりました。
これは単なる例です。上記の例の数値の代わりに変数を介して計算が行われるため、予想どおり、最終的なmktimeバージョンが前の2つと同じように機能する必要があります。
何か案は?
なぜこれが当てはまるのかについてはよく説明できません-渡した値が整数ではなく浮動小数点数であることに関係していると感じているので、おそらくバックグラウンドで精度の問題が発生しています。
2番目のパラメーターの周りにround()関数を追加すると、以下が正しく機能するように見えます。
echo mktime(7, round(60 * ( 7.6 - 7.0 )), 0);
1406842560を返します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加