1

PHP関数の一部の算術演算(ほとんどは乗算/除算)で変数が使用されている状況があります。変数は、実際には別の関数から関数に渡されます。ただし、渡されるものは、数値または文字列値のいずれかです。

だから基本的に私は持っています:

 $inverse = 1/$number;

where$numberは、有効な数値または文字列のいずれかです。

私の質問は、文字列の場合はどう$numberなりますか? PHPはその状況をどのように処理しますか?

最終的に、答えはそれほど重要ではありません。この状況を回避するには、いくつかの異なる方法を考えることができます。それが出てきただけで、興味があり、簡単なグーグル検索では私の質問に答えることができませんでした. 答えを知る必要がなくても、答えを知りたいです。なぜなら、PHP の仕組みを理解することは将来の役に立つからです。

ありがとう。

4

3 に答える 3

3

PHP は型強制 ( type-jugglingとも呼ばれます) を実行し、変数が数値コンテキストで使用されている場合、値が文字列の場合は数値として解釈しようとします。

除算演算子に関するドキュメントを参照してください。

除算演算子 ("/") は、2 つのオペランドが整数 (または整数に変換される文字列) であり、数値が均等に割り切れない限り、浮動小数点値を返します。この場合、整数値が返されます。

また関連する、文字列の数値への変換:

文字列が数値コンテキストで評価されると、結果の値と型は次のように決定されます。

....

値は文字列の最初の部分によって与えられます。文字列が有効な数値データで始まる場合、これが使用される値になります。それ以外の場合、値は 0 (ゼロ) になります。有効な数値データは、オプションの符号であり、その後に 1 つ以上の数字 (オプションで小数点を含む) が続き、その後にオプションの指数が続きます。指数は、'e' または 'E' の後に 1 つ以上の数字が続きます。

于 2012-07-25T23:48:05.237 に答える
1

PHP はサイレントに文字列を浮動小数点数に変換します。

于 2012-07-25T23:48:18.143 に答える
1

"1bottle"文字列を受け取り、その引数の値を分析します。たとえば、 will become 1. 原則として、文字列の最初の部分に含まれるすべての数値文字は float に変換されます。12.3bottle= 12.3.3alonin= 0.3 などです。最初の数値文字がない場合、値は 0 になります。

これは型ジャグリングと呼ばれます。

于 2012-07-25T23:50:42.617 に答える