PHP は、変数定義で明示的な型定義を必要としません (またはサポートしません)。変数の型は、変数が使用されるコンテキストに基づいて決定されます。つまり、変数 $var に文字列値を代入すると、$var は文字列になります。 $var に整数を代入すると、それは整数になります。
PHP の自動型変換の例は、加算演算子「+」です。いずれかのオペランドが float の場合、すべてのオペランドは float として扱われ、結果も float になります。それ以外の場合、オペランドは整数として解釈され、結果も整数になります。これによりオペランド自体の型は変更されず、オペランドの評価方法と式自体の型が変更されるだけであることに注意してください。
<?php $foo = "0" ; // $foo 是字符串 (ASCII 48) $foo += 2 ; // $foo 现在是一个整数 (2) $foo = $foo + 1.3 ; // $foo 现在是一个浮点数 (3.3) $foo = 5 + "10 Little Piggies" ; // $foo 是整数 (15) $foo = 5 + "10 Small Pigs" ; // $foo 是整数 (15) ?>
上記の 2 つの例が奇妙に思われる場合は、「文字列を数値に変換する」を参照してください。
変数を特定の型として強制的に評価したい場合は、「型強制」セクションを参照してください。変数の型を変更したい場合は、settype() を参照してください。
このセクションの例のいずれかをテストしたい場合は、var_dump() 関数を使用できます。
注:
配列への自動変換の動作は現在未定義です。
さらに、PHP は配列の添字と同じ構文を使用した文字列の添字へのアクセスをサポートしているため、次の例はすべての PHP バージョンで有効です:
<?php $a = 'car' ; // $a is a string $a [ 0 ] = 'b' ; // $a is still a string echo $a ; // bar ?>
型キャスト
PHP と C の型キャストは非常に似ています: precedeターゲットの型で変換される変数を括弧で囲みます。
<?php $foo = 10 ; // $foo is an integer $bar = (boolean) $foo ; // $bar is a boolean ?>
許可されるキャストは次のとおりです:
(int), (integer) - 整数に変換
(bool), (boolean) - ブール型 boolean
(float ), (double)、(real) - float に変換します float
(string) - 文字列に変換します string
(array) - 配列に変換します array
(object) - オブジェクト object 用に変換します
(未設定) - NULL に変換 (PHP 5)
(バイナリ) 変換と b 接頭辞変換のサポートは、PHP 5.2.1 の新機能です。
括弧内ではスペースとタブを使用できるので、次の 2 つの例は同じように機能することに注意してください:
<?php $foo = (int) $bar ; $foo = ( int ) $bar ; ?>
文字列リテラルと変数をバイナリ文字列に変換します:
<?php $binary = (binary) $string ; $binary = b"binary string" ; ?>
注:
代わりに変数を二重引用符で囲むこともできます変数を文字列に変換する方法:
<?php $foo = 10 ; // $foo 是一个整数 $str = " $foo " ; // $str 是一个字符串 $fst = (string) $foo ; // $fst 也是一个字符串 // 输出 "they are the same" if ( $fst === $str ) { echo "they are the same" ; } ?>
以上がPHPのデータ型変換の判別の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。