1...1 が 10.1 と評価されるのはなぜですか? [重複] 質問する

1...1 が 10.1 と評価されるのはなぜですか? [重複] 質問する

私はちょうど 3v4l からの小さな PHP スニペットに直面しました:https://3v4l.org/jmrZB

echo 1...1; //10.1

そして、その結果をどう説明すればいいのか、私には全くわかりません。なぜこれが有効だと考えられるのでしょうか?

ベストアンサー1

.PHP ではドット ( ) には 2 つの役割があります。

  1. 実数の一部である場合の小数点として、例1.1:実数では整数部と小数部の両方がオプションです。しかし同時にではないつまり、 と はどちらも1.PHP.1では有効な実数ですが、.は数値ではありません。
  2. として文字列連結演算子この演算子は、2 つの文字列部分式を 1 つの大きな式に結合します。大きな式の値は、部分式の文字列値を連結したものです。文字列でない部分式は、連結前に文字列に変換されます。
    たとえば、1 . 1は と同じであり'1' . '1'、その値は文字列 です'11'

この式1...1は として解析されます1. . .1。前述のとおり、1.と は.1実数 (1.0および0.1) であり、中央のドット ( .) は文字列連結演算子です。

数値を文字列に変換する場合、PHP はこの操作に必要な最小限の文字数を使用します。実数が整数部分のみを持つ場合、小数点や小数点のない整数として数値を表します。

1. . .1これが、 が と同じであり'1' . '0.1'、式の最終的な値が である理由です10.1

なぜ1...1このように解析されるのでしょうか?

パーサーは式を左から右に読み取ります。1は、そこから数値が始まることを伝えます。1.は有効な実数ですが、1..そうではありません。 は数値として保持され1.、次のドットは連結演算子です。次の は.、数字が続き、別の実数 ( .1) の始まりです。

全体としては、1...1と同じです1. . .1

おすすめ記事