ホームページ  >  記事  >  バックエンド開発  >  PHPでの型変換

PHPでの型変換

韦小宝
韦小宝オリジナル
2018-05-14 14:38:557421ブラウズ

PHP開発の過程では、受け取ったデータ型が必要なデータ型と異なることに必ず遭遇します。このとき、これから説明するPHP型変換を使用できます。今日はPHPの型変換についてです。見てみましょう。

整数と浮動小数点数に変換する

整数に変換できる型には、浮動小数点数、ブール値、文字列、リソースのみが含まれます。配列とオブジェクトは

数値型 に変換できません。

浮動小数点数に変換する場合、文字列を浮動小数点数に変換するための独自のルールがあることを除き、他の値はまず整数に変換され(整数に変換できることが前提)、それから浮動小数点数に変換されます。

浮動小数点数から整数に変換する場合、切り捨て(小数点以下切り捨て)となります。浮動小数点数が整数の範囲外にある場合、正確な整数の結果を得るには精度が不十分であるため、結果は不定になります。この場合、警告はなく、通知さえありません。


PHP 7.0.0 以降、NaN と Infinity は整数に変換されるときに未定義またはプラットフォームに依存しなくなり、ゼロになります。

文字列 (10 進数のみをサポート) を整数に変換する場合、最初の文字から文字列の末尾まで、または整数以外の文字が見つかるまで、有効な整数文字を検索し、見つかった文字を整数に変換します。有効な文字がない場合、結果は 0 になります。

文字列を浮動小数点数に変換する場合、文字列の最初の文字から末尾まで、または非浮動小数点文字が見つかるまで有効な浮動小数点文字を検索し、見つかった文字を浮動小数点数に変換します。有効な文字ではない場合、結果は 0 になります。

文字列に「.」、「e」、または「E」が含まれておらず、その数値が整数の範囲内(PHP_INT_MAX で定義されている)の場合、文字列は整数として扱われます。それ以外の場合はすべて、値は浮動小数点数として扱われます。


文字列の先頭によって値が決まります。文字列が有効な数値で始まる場合は、その数値が使用されます。それ以外の場合、その値は 0 (ゼロ) です。有効な値は、オプションの符号、その後に続く 1 つ以上の数字 (小数点を含む場合もあります)、およびオプションの指数部分で構成されます。指数部は、「e」または「E」とそれに続く 1 つ以上の数字で構成されます。

echo 0+"0xff","\n";   // 0  
echo 0+"2.33","\n";   // 2.33  
echo 0+"033","\n";    // 33  
echo 0+"2e3","\n";    // 2000
null -> 0
true -> 1
false -> 0

リソースを整数に変換すると、結果は PHP ランタイムによってリソースに割り当てられた一意のリソース番号になります。

文字列に変換

true -> "1"
false -> ""
null -> ""

整数または浮動小数点数を文字列に変換し、値を文字列(10進数、小数点形式)に直接表現します

配列を文字列に変換すると、結果は「配列」になります

オブジェクトが文字列に変換されると、結果は「Object」になります

リソースが文字列に変換されると、「リソースID#1」のような文字列はブール値に変換されます

他の値はブール値に変換され、次の値のみが false に変換され、その他はすべて true に変換されます:

整数 0

浮動小数点 0.0

string "0"

string" "

空の配列(要素なし)

空のオブジェクト(メンバーなし)

NULL(未設定の変数を含む)

空のタグから生成された単純なXMLオブジェクト

配列に変換

整数、浮動小数点 点、ブール値、および文字列が配列に変換されると、新しい配列が取得されます。配列には要素が 1 つしかないため、要素の値は対応する整数、浮動小数点数、ブール値、または文字列になります。

null を配列に変換すると、結果は空の配列になります:

echo var_dump((array)null);  
//array(0) {

}

変換を表示

1 変数の前にキャスト演算子を追加できます:

(int)(integer)
(float)(double)(real)
(bool)(boolean)
(string)
(array)
(object)
この方法は変わりません。変数のデータ型ですが、式のデータ型のみが変更されます。

2. settype(var, type) 関数を使用します

$var = true;  
settype($var, "integer");  
var_dump($var);  // int(1)

変数の型と値が変更されていることがわかります

3. intval()/floatval()/boolval()/strval を使用します。 () 一連の関数

これらの関数は変数の値を変更しないことに注意してください

$var = "0xff";  
$num = intval($var, 16);  
var_dump($var);  // string(4) "0xff"  
var_dump($num);  // int(255)

intval() 関数の最初のパラメータが文字列の場合、値の基数を指定するオプションの 2 番目のパラメータを指定できます文字列内に .このパラメータが指定されていない場合は、デフォルトで 10 進数で処理されます。パラメータに 0 を指定した場合は、文字列形式で自動的に決定されます (0x から始まるのは 16 進数です...)

intval()オブジェクト型には使用できません

この関数は、変換された整数値を返します。変換が失敗した場合は、0 を返します。パラメータが配列の場合は、空でない配列の場合は 1 を返し、空の配列の場合は 0 を返します。 ) パラメータのブール値を取得します。

floatval()

関数

のパラメーターは、整数、浮動小数点数、ブール値、文字列などのスカラー型のみにすることができます。配列またはオブジェクトでは使用できません。

strval() 関数のパラメーターは、整数、浮動小数点数、ブール値、文字列などのスカラー型のみにすることができます。配列またはオブジェクトでは使用できません。

どのような状況では暗黙的な変換は実行されませんか?

算術演算子の両方のオペランドは数値型に変換されます。

string concatenation 演算子の両方のオペランドは文字列型に変換されます。

文字列を必要とする式では、自動的に文字列に変換されます。この変換は、たとえば、関数 echo または print を使用するとき、または変数を文字列と比較するときに発生します。

上記はphpの型変換のすべての内容です。詳細については、このサイトを検索してください。

関連する推奨事項:

PHPの型変換の識別

phpの型変換

PHPの型変換に関するインタビューの質問と回答の分析

以上がPHPでの型変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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