データ型を取得する
1. 特定の式の値と型を確認するには、var_dump() を使用します。
2. デバッグ用に読みやすい型の表現方法を取得したい場合、`gettype()`を使用してください。
3. 指定された型を確認する際は、`gettype()`ではなく、`is_type()`関数を使用してください。
文字列を数値に変換する
文字列が数値として評価される場合、結果の型および値は以下のルールに従って決定されます。
「。」、「e」または「E」のいずれかの文字が含まれている場合、その文字列は `float` として評価されます。それ以外の場合は、整数として評価されます。
この値は、文字列の先頭部分によって決定されます。文字列が有効な数値データで始まる場合、その数値を値として使用します。そうでない場合は、値は0(ゼロ)となります。
合法なデジタルデータは、任意の正または負の符号で始まり、その後に1つまたは複数の数字(任意に小数部を含む)、そして任意の指数が続く。
指数とは、「e」または「E」の後に1つまたは複数の数字が続く形式です。
注:文字を整数型に変換する際に、その文字のエンコード値を直接得られるとは限りません(C言語ではこのような処理が行われることもあります)。文字エンコード値と文字の間で変換する場合は、`ord()` および `chr()` 関数を使用してください。
強制型変換
PHPにおける型強制変換は、C言語と非常に似ています。つまり、変数を変換する前に、括弧で囲んだ目的の型を付加するという方法です。
許可される強制変換は以下の通りです:
(int),(integer) - 转换成整型
(bool),(boolean) - 转换成布尔型
(float),(double),(real) - 转换成浮点型
(string) - 转换成字符串
(array) - 转换成数组
(object) - 转换成对象括弧内にスペースまたはタブを含めることを許可します。
また、`settype`(`mixed var`、`string type`)を使用して強制型変換も行えます。
強制的に布尔値(bool)または(boolean)に変換します。
値を明示的に `bool` に変換する場合は、`(bool)` または `(boolean)` を使用して強制変換を行います。しかし、多くの場合、強制変換は不要です。演算子、関数、または処理制御で `bool` 型の引数が必要な場合、その値は自動的に変換されるためです。
`boolean`型に変換された場合、以下の値は `FALSE` とみなされます:
布尔値:FALSE
整数値:0(ゼロ)
浮動小数点数値:0.0(0)
空白文字列および文字列「0」
メンバー変数のない配列
ユニットを持たないオブジェクト(PHP 4専用)
特殊な型「NULL」(まだ値が設定されていない変数を含む)
他のすべての値は「TRUE」とみなされます(任意のリソースを含む)。
<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>強制変換(int | 整数)
値を明示的に整数型に変換するには、(int)または(integer)で強制変換を行います。しかし、ほとんどの場合、強制変換は不要です。なぜなら、演算子、関数、または処理制御で整数型の引数が必要な場合、値は自動的に変換されるからです。また、関数 `intval()` を使用することで、値を整数型に変換することも可能です。
a. bool型から変換
b. 浮動小数点数から整数に変換する場合:範囲を超えると、結果が不確定となる。
c. 文字列から数値への変換 — 「文字列を数値に変換する」を参照してください。
d. 他の型から変換:まず `bool` 値に変換し、その後で変換します。
未知の分数を必ずしも整数に強制変換しないでください。そうすると、偶発的な結果が生じる可能性があります。
<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7
?>
$str = "123.456abc7"; // (int)123
echo (int)$str;
$str = "abc123.456"; // (int)0
$str = true; // (int)1
$str = false; // (int)0強制変換(浮動小数点型):(int)|(double)|(real)|doubleval()|floatval()|intval()
精度:0.12345678901234 // `double` と `real` は同じ
データの失敗/文字列を数値に変換する
強制的に文字列に変換(string)|strval()
値を文字列に変換するには、「(string)」タグまたは `strval()` 関数を使用できます。式で文字列が必要な場合、この文字列変換は式の範囲内で自動的に実行されます。例えば、`echo()` または `print()` 関数を使用する場合、または変数の値と文字列を比較する場合などです。
布尔值 TRUE 将被转换为字符串 "1",而值 FALSE 将被表示为 ""(即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。
整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。
数组将被转换成字符串 "Array",因此无法通过 echo() 或者 print() 函数来输出数组的内容。请参考下文以获取更多提示。
对象将被转换成字符串 "Object"。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数 get_class()。自 PHP 5 起,如果合适可以用 __toString() 方法。
资源类型总是以 "Resource id #1" 的格式被转换成字符串,其中 1 是 PHP 在运行时给资源指定的唯一标识。如果希望获取资源的类型,请使用函数 get_resource_type()。
NULL 将被转换成空字符串。
前述の通り、配列、オブジェクト、またはリソースを出力しても、それらの値自体に関する有用な情報を得ることはできません。
`print_r()` および `var_dump()` を参照してください。デバッグにおいては、これらが値を表示するより優れた方法です。
PHPの値を文字列に変換し、それらを永続的に保存することができます。
この手法は「序列化」と呼ばれ、`serialize()`関数を用いて実行できます。PHPのインストール時にWDDXサポートが有効に設定されている場合、PHPの値をXML構造に序列化することも可能です。
強制的に配列(array)に変換する
对于任何的类型:整型、浮点、字符串、布尔和资源,如果将一个值转换为数组,将得到一个仅有一个元素的数组(其下标为 0),该元素即为此标量的值。
如果将一个对象转换成一个数组,所得到的数组的元素为该对象的属性(成员变量),其键名为成员变量名。
如果将一个 NULL 值转换成数组,将得到一个空数组。
オブジェクトに変換する
オブジェクトをオブジェクトに変換すると、そのオブジェクトに変更は加わらない。他の任意の型の値をオブジェクトに変換すると、標準クラス stdClass のインスタンスが生成される。この値が NULLの場合、新しく生成されたインスタンスは空の状態となる。配列をオブジェクトに変換すると、キー名が属性名となり、対応する値が設定される。その他の任意の値については、「scalar」と名付けられたメンバ変数に該当する値が格納される。
リソースに変換(変換できません)
リソースタイプ変数には、開いたファイル、データベース接続、グラフィカルキャンバス領域などに対する特殊なハンドルが保存されているため、他の種類の値をリソースに変換することはできません。