PHP では、宣言された変数で変数の型を指定する必要はありません (またはサポートしません)。変数の型は、変数が使用されるコンテキストによって決まります。 if 文字列値を変数 var に代入すると、var は文字列変数になります。 var に整数を代入すると、整数変数になります。
PHP が変数の型を自動的に変換する例は、加算演算子「+」です。いずれかのオペランドが double である場合、すべてのオペランドは double として評価され、結果も double になります。 それ以外の場合、オペランドは整数とみなされ、結果は整数になります。これは各オペランド自体の変数タイプには影響せず、唯一の変更は計算中のオペランドの処理方法であることに注意してください。
$foo = "0"; // $foo は文字列で、値は "0" (ASCII 48) です
$foo++; // $foo は文字列で、値は「1」(ASCII 49) です
$foo += 1; // $foo は整数 (2) になります
$foo = $foo + 1.3; // $foo は double (3.3) になります
$foo = 5 + "10 Little Piggies" // $foo は整数 (15) です
;$foo = 5 + "10 Small Pigs" // $foo は整数 (15) です
;上記の例の最後の 2 つの式が少し奇妙に見えると思われる場合は、「文字列変換」セクションを参照してください。
変数を固定型として強制的に評価したい場合は、「キャスト」セクションを参照してください。変数の型を変更したい場合は、関数「settype()」の説明を参照してください。
変数の型を決定する
PHP は変数の型をそれ自体で決定し、通常は必要に応じてそれらを変換するため、特定の変数の型が常に明らかであるとは限りません。 PHP には、この変数の型を調べる関数が含まれています。これらの関数は、gettype()、is_long()、is_double()、is_string()、is_array()、および is_object() です。
型キャストPHP での型強制は C 言語とほぼ同じです。強制される変数の前の括弧内に必要な型を記述します。
$foo = 10 // $foo は整数です
;
$bar = (double) $foo; // $bar は倍精度数です次の強制メソッドが許可されます:
(int), (integer) – 整数に強制
(real)、(double)、(float) – 強制的に倍精度数値にします
(文字列) – 強制的に文字列にします
(array) – 強制的に配列に入れます
(オブジェクト) – 反対を強制される
かっこ内ではタブとスペースを使用できるため、次のステートメントは同等であることに注意してください。
$foo = (int) $bar;
$foo = (int) $bar;
文字列変換
文字列が数値として評価される場合、その結果と型は以下のように決定されます。
この文字列に「.」「e」「E」の文字が含まれている場合はdouble型の変数として扱われ、それ以外の場合は整数として扱われます。
この文字列の値は単語の先頭部分によって決まります。文字列が有効な数値データで始まる場合、その数値データが文字列の評価の対象となる値となります。それ以外の場合、値はゼロです。有効な数値データはこれらの表記に従い、その後に 1 つ以上の数字 (小数点を含む場合があります)、その後にオプションの指数が続きます。指数は、1 つ以上の数字の後に「e」または「E」が続くことで形成されます。
$foo = 1 + "10.5" // $foo は倍精度数 (11.5) です
;$foo = 1 + "-1.3e3" // $foo は倍精度数 (-1299) です
;$foo = 1 + "bob-1.3e3" // $foo は整数 (1) です
;$foo = 1 + "bob3" // $foo は整数 (1) です
;$foo = 1 + "10 Small Pigs" // $foo は整数 (11) です
;$foo = 1 + "10 Little Piggies" // $foo は整数 (11);
;// この文字列には文字「e」が含まれています
詳細については、Unix マニュアルの strtod(3) セクションを参照してください。
http://www.bkjia.com/PHPjc/845134.html