PHP は弱い型指定です。使用時に変数の型を定義する必要はありません。変数は、指定した任意の型になります。
PHP では、変数の型は、変数に割り当てられた値によって決まります。割り当てられた値が整数の場合、変数は整数型であり、文字列の場合、変数は文字列型です。
コードは次のとおりです | コードをコピー |
$name="あなたの名前"; //名前は文字列型です。 |
PHP は 8 つのプリミティブ型 (型) をサポートしています。
4 つのスカラー型:
文字列(ストリング)
integer (整数型)
float (浮動小数点型、double とも呼ばれます)
ブール値 (ブール型)
2 つの複合タイプ:
配列 (配列)
オブジェクト
2 つの特別なタイプ:
リソース
NULL (空)
変数の型を表示する
gettype() 関数を通じて変数の型を簡単にチェックできます:
コードは次のとおりです | コードをコピー |
$var_bool = TRUE // ブール値 echo gettype($var_bool); // 出力 boolean |
ヒント
歴史的な理由により、データが float 型の場合、gettype() 関数は float ではなく double を返します。
式の値と型を確認したい場合は、var_dump() 関数を使用します。
変数の型を決定する
変数の型を判断して次の論理アクションを決定したい場合は、gettype() を使用せず、is_type 一連の関数を使用してください。
コードをコピー | |
$var_int = 12; // $var_int が int 型の場合、加算を実行します
if (is_int($var_int)) {
|
整数データ型:
整数は、集合 Z={…,-2,-1,0,1,2,…} 内の数値です。整数値は、オプションの記号 (- または +) を前に付けて、10 進数、16 進数、または 8 進数の表記で指定できます。8 進表記を使用する場合は数値の前に 0 (ゼロ) を追加する必要があり、16 進表記を使用する場合は数値の前に 0x を追加する必要があります。
例:
コードをコピー | |||||
$a=1234; //10 進数 $a=-123; //負の数 $a=0123; //8 進数 (10 進数の 83 に等しい) $a=0x1A; //16 進数 (10 進数の 26 に等しい) ?>
|
コードは次のとおりです | コードをコピー |
$foo=True; // $foo に true 値を代入します ?> |
次の値は FALSE とみなされます:
� ブール値 FALSE
� 整数値0(ゼロ)
� 浮動小数点値 0.0 (ゼロ)
� 空文字列と文字列「0」
� メンバー変数のない配列
� ユニットのないオブジェクト
� 特別な型 NULL (設定されていない変数を含む) 他の値はすべて TRUE (リソースを含む) とみなされます
floatデータ型
浮動小数点数の語長はプラットフォームに依存しますが、通常、最大値は 10 進数 14 桁 (64 ビット IEEE 形式) の精度で 1.8e308 です。
0.1 や 0.7 などの一見単純な小数は、精度を少し損なうことなく内部バイナリ形式に変換できません。これは、混乱を招く結果につながる可能性があります。たとえば、floor((0.1+0.7)*10) は、結果の内部表現が 7.9 のようなものであるため、期待される 8 ではなく 7 を返すことがよくあります。
コードは次のとおりです | コードをコピー |
$a = 76.60; $c = $a-$b; ?> 出力は |
ただし、76.70ではこの問題は発生しない…後から知りました
コードは次のとおりです | コードをコピー | ||||
$a = 76.60;
$d = 整数($a*100);
var_dump($d);
$a = 76.60; それは確かに 76.60 の問題です... (この問題は Java と Obj-C でも再現されます) これは、有限の桁数で特定の小数を正確に表現することが不可能であるという事実と関係しています。たとえば、10 進数の 1/3 は 0.3 になります。 浮動小数点 浮動小数点数 (「浮動小数点数」、「倍精度浮動小数点」、または「実数」とも呼ばれます) は、次の構文のいずれかを使用して定義できます:
これらの数値タイプについては php で詳しく説明していますので、詳しく知りたい方は参照してください。 |