PHPの型変換の判別

伊谢尔伦
伊谢尔伦オリジナル
2016-11-24 09:06:311493ブラウズ

PHP は、変数定義で明示的な型定義を必要としません (またはサポートしません)。変数の型は、変数が使用されるコンテキストに基づいて決定されます。つまり、変数 $var に文字列値を代入すると、$var は文字列になります。 $var に整数値を代入すると、それは整数になります。

PHP の自動型変換の例は、加算演算子「+」です。いずれかのオペランドが浮動小数点数である場合、すべてのオペランドは浮動小数点数として扱われ、結果も浮動小数点数になります。それ以外の場合、オペランドは整数として解釈され、結果も整数になります。これによりオペランド自体の型は変更されず、オペランドの評価方法と式自体の型が変更されるだけであることに注意してください。

<?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)
?>

このセクションの例のいずれかをテストしたい場合は、var_dump() 関数を使用できます。

注:

配列への自動変換の動作は現在未定義です。

さらに、PHP は配列の添字と同じ構文を使用した文字列の添字へのアクセスをサポートしているため、次の例はすべての PHP バージョンで有効です。

40034608619e2f049b7d05b6f66607f6

型キャスト

PHP と C では次のようになります: 変数の前に置きます括弧内にターゲットの型を指定して変換されます。

<?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

(unset) - NULL に変換 (PHP 5)

( binary) 変換と b プレフィックス変換のサポートが PHP 5.2.1 に新たに追加されました。

括弧内ではスペースとタブを使用できるので、次の 2 つの例は同じ機能を持つことに注意してください:

42ef6331098597c6fe28c235fe66d08b

文字列リテラルと変数をバイナリ文字列に変換します:

475a5c5c0b8914c684abaf85892b46dc

注:

代わりに変数を文字列に変換する場合は、二重引用符で囲むことができます:

<?php
$foo = 10;            // $foo 是一个整数
$str = "$foo";        // $str 是一个字符串
$fst = (string) $foo; // $fst 也是一个字符串// 输出 "they are the same"
if ($fst === $str) {
echo "they are the same";
}
?>


場合によっては、型間でキャストするときに正確に何が起こるかが明確でない場合があります。詳細については、以下を参照してください:

ブール値に変換

整数に変換

浮動小数点に変換

文字列に変換

配列に変換

オブジェクトに変換

リソースに変換

NULLに変換


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。