ホームページ >バックエンド開発 >PHPの問題 >phpにはどのような種類のキャストがありますか?

phpにはどのような種類のキャストがありますか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-22 10:29:313079ブラウズ

php の強制変換タイプには、1. 整数型への変換、2. ブール型への変換、3. 浮動小数点型への変換、4. 文字列への変換、5. 配列への変換、6. への変換が含まれます。物体。

phpにはどのような種類のキャストがありますか?

php の型強制型は次のとおりです:

PHP の型強制は C の型強制とよく似ています。変換対象の前に、括弧で囲まれたターゲットの型が続きます。

許可されるキャストは次のとおりです:

  • (int),(integer) - 整数型に変換します

  • (bool ) ,(boolean) - ブール型に変換します

  • #(float),(double),(real) - 浮動小数点型に変換

  • # (文字列) _括弧

    #settype (混合変数、文字列型) を使用して強制変換することもできます。
  • 1. ブール値への強制変換 (bool)|(boolean)

  • 値をブール値に明示的に変換するには、(bool) または (boolean) を使用して変換を強制します。ただし、演​​算子、関数、またはフロー制御でブール値パラメーターが必要な場合、値は自動的に変換されるため、多くの場合、キャストは必要ありません。

    ブール値に変換すると、次の値は FALSE とみなされます:
ブール値 FALSE

整数値 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)
?>

2. 整数への強制変換 (int)|(integer)

値を明示的に整数に変換するには、(int) または (integer) キャストを使用します。ただし、演​​算子、関数、またはフロー制御で整数パラメーターが必要な場合、値は自動的に変換されるため、ほとんどの場合、キャストは必要ありません。関数 intval() を使用して値を整数型に変換することもできます。

a. ブール値から変換

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

3. 浮動小数点型への強制変換 (int)|(double)|(real)|doubleval()|floatval()|intval()

精度: 0.12345678901234 // double と real は同じです

データの欠落しているパラメータ文字列を数値に変換します

4. 強制変換to string (string) |strval()

(string) 表記または strval()

関数を使用して、値を文字列に変換できます。式に文字列が必要な場合、文字列の変換は式のスコープ内で自動的に行われます。たとえば、

echo()

または

print()

関数を使用する場合、または変数値を文字列と比較する場合です。

ブール値 TRUE は文字列 "1" に変換され、値 FALSE は "" (つまり空の文字列) として表されます。これにより、ブール値と文字列を自由に比較できるようになります。

整数または浮動小数点値が文字列に変換される場合、文字列はこれらの値を表す数値で構成されます (浮動小数点数には指数部も含まれます)。 配列は文字列「Array」に変換されるため、配列の内容を echo() 関数や print() 関数を通じて出力することはできません。その他のヒントについては、以下を参照してください。

  • オブジェクトは文字列「Object」に変換されます。デバッグ目的でオブジェクトのメンバー変数を出力する必要がある場合は、以下をお読みください。オブジェクトがアタッチされているクラスの名前を取得したい場合は、関数 get_class() を使用します。 PHP 5 以降では、必要に応じて __toString() メソッドを使用できます。

  • リソースタイプは常に「リソース ID #1」形式の文字列に変換されます。ここで、1 は実行時に PHP によってリソースに割り当てられる一意の識別子です。リソースのタイプを取得したい場合は、関数 get_resource_type() を使用します。

  • NULL は空の文字列に変換されます。

  • 上で示したように、配列、オブジェクト、またはリソースを出力しても、値自体に関する有用な情報は提供されません。デバッグ用に値を出力するより良い方法である関数

    print_r()

    および
  • var_dump()
  • を参照してください。

    PHP 値を文字列に変換して、永続的に保存できます。このメソッドはシリアル化と呼ばれ、関数 serialize() を使用して実行できます。 PHP のインストール時に WDDX サポートを設定すると、PHP 値を XML 構造にシリアル化することもできます。

    5. 配列へのキャスト

    任意の型: 整数、浮動小数点、文字列、ブール値、リソースの値を配列に変換すると、次のようになります。このスカラーの値である 1 つの要素 (添字は 0) のみを持つ配列。

    オブジェクトを配列に変換すると、結果の配列の要素がオブジェクトの属性 (メンバー変数) となり、そのキー名がメンバー変数名になります。

    NULL 値を配列に変換すると、空の配列が得られます。

    6. オブジェクト (オブジェクト) への変換

    オブジェクトをオブジェクトに変換しても、それは何も変わりません。

    他のタイプの値がオブジェクトに変換される場合、組み込みクラス stdClass のインスタンスが作成されます。

    値が NULL の場合、新しいインスタンスは空です。配列をオブジェクトに変換すると、キーが対応する値を持つプロパティ名になります。

    その他の値の場合、scalar という名前のメンバー変数には値

    7 が含まれます。リソースに変換 (変換できません)

    原因リソース タイプ変数は、開いているファイル、データベース接続、グラフィック キャンバス領域などの特別なハンドルを保持するため、他のタイプの値をリソースに変換することはできません。

    • HTML フォームは、整数、浮動小数点数、またはブール値を渡しません。文字列のみを渡します。文字列が数値かどうかを確認するには、is_numeric() 関数を使用できます。

    • 変数 $x が定義されていない場合、if ($x) などを使用すると E_NOTICE レベルのエラーが発生します。したがって、空の使用を検討できます

    関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで

以上がphpにはどのような種類のキャストがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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