ホームページ >バックエンド開発 >PHPの問題 >PHPで強制的に文字列に変換する方法

PHPで強制的に文字列に変換する方法

藏色散人
藏色散人オリジナル
2021-03-15 09:13:413925ブラウズ

php を強制的に文字列に変換する方法: 最初に PHP サンプル ファイルを作成し、次に変数を定義し、最後に PHP の string メソッドを通じて強制的に文字列に変換します。

PHPで強制的に文字列に変換する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 パソコン

PHP 強制変換タイプ

データ型の取得:

1. 式の値と型を確認したい場合は、var_dump() を使用します。
2. デバッグ用に読みやすい型式を取得したいだけの場合は、gettype() を使用します。
3. 特定の型を表示するには、gettype() を使用せず、is_type() 関数を使用します。

#文字列を数値に変換します

  1. 文字列が数値として評価される場合、次の規則が使用されます。型を決定します。そして結果の価値。
  2. 文字「.」、「e」、または「E」のいずれかが含まれている場合、文字列は浮動小数点数として評価されます。それ以外の場合は、整数として扱われます。
  3. 値は文字列の最初の部分によって決まります。文字列が正当な数値データで始まる場合は、その数値が値として使用され、それ以外の場合は値が 0 (ゼロ) になります。有効な数値データはオプションの符号で始まり、その後に 1 つ以上の数字 (オプションで小数を含む)、その後にオプションの指数が続きます。指数は、「e」または「E」の後に 1 つ以上の数字が続きます。

注: 文字を整数に変換するときに、その文字のエンコーディングが取得されることを期待しないでください (これはおそらく C でも同様に行われます)。文字エンコーディングと文字の間で変換する場合は、ord() 関数と chr() 関数を使用します。

#■強制型キャスト

PHP での型キャストは、C での型キャストと非常によく似ています: 変換される変数内でかっこで囲まれたターゲット タイプによって指定されます。


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

    (int),(integer) - 整数に変換します
  • (bool),(boolean) - に変換しますブール型
  • (float),(double),(real) - 浮動小数点型に変換します
  • (string) - 文字列
  • (array) - に変換します配列
  • (object) - オブジェクトに変換します
括弧内ではスペースとタブを使用できることに注意してください


settype (

1. ブール値への強制変換 (bool)|(boolean)

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

ブール値に変換すると、次の値は 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都一样
数据的丢失参 字符串转换为数值
【推荐学习:《PHP视频教程》】    
    4.强制换为字符串 (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 结构。 
    4. 强制转换为数组 (array)

  • 对于任何的类型:整型、浮点、字符串、布尔和资源,如果将一个值转换为数组,将得到一个仅有一个元素的数组(其下标为 0),该元素即为此标量的值。
  • 如果将一个对象转换成一个数组,所得到的数组的元素为该对象的属性(成员变量),其键名为成员变量名。
  • 如果将一个 <span style="font-family: NSimsun">NULL</span> 值转换成数组,将得到一个空数组。

         5. 转换为对象 (object)
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值
    6. 转换为资源 (无法转换)
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。
■PHP 类型比较表
以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。

  • 注意
  • HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用 is_numeric() 函数。
  • 在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,可以考虑用 empty 

 

以上がPHPで強制的に文字列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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