在PHP中进行强制转换

尽管PHP是一种不需要显式声明类型的语言,但它存在与C语言风格的转换相似的类型强制转换。然而,PHP常常会出现一些不那么简单的类型转换情况。

将转换为标量类型

在C语言中,无法将整数转换为字符串,但在PHP中则可以很容易地做到。然而,出乎意料地,PHP有多个类型指定符。

    • 整数へのキャスト:(int)、(integer)

文字列へのキャスト:(string)

ブール値へのキャスト:(bool)、(boolean)

浮動小数点数へのキャスト:(float)、(double)、(real)

因此,由于这些函数(intval、strval、boolval、floatval)存在相等的转换功能,所以在较长的表达式中,如果使用转换操作符不清楚需要转换到哪个类型,可能更容易阅读的是使用函数的方式。

将数据转换为数组

在PHP中,通过写作(array)可以实现对数组的类型转换。这个行为的意思是,

    • NULL→空の配列

 

    • その他のスカラー値→1個だけ入った配列

 

    • 配列→そのまま

 

    オブジェクト→プロパティ値をキーにした連想配列

创建PHP中常见的“既可以接收单个值也可以接收数组作为参数”的函数时,可以将接收到的参数强制转换为一个数组,然后以后都可以将其作为数组来使用。不过,对于对象而言,如果存在继承关系或者存在private或protected属性,可能会生成一个带有空字符的奇怪键名,因此在实际应用中,只能将stdClass对象转换为关联数组左右。

将对象强制转换为另一种类型

太不可思议了,居然可以通过强制转换来生成对象,但是它们都会变成stdClass的对象。

    • スカラー値→それをscalarプロパティに入れたオブジェクト

 

    • 連想配列→配列のキーをプロパティ名に変換したオブジェクト

 

    オブジェクト→そのまま

如果数组中有数值键,则转换后的对象将无法访问。

将NULL向NULL进行转换。

在中文中将以下内容表达:(仅需要一种选项)
虽然有”unset”的角色,但无论接收到什么,都会返回NULL。在C语言中,偶尔需要使用(void),但在类型不严格、也没有宏的PHP中,很难想象会需要这种情况。

广告
将在 10 秒后关闭
bannerAds