第七章:第17节 PHP面向对象——数组与对象相互转换(一)

更新于:2017-06-11 16:12:40

对象与数组(确切说是关联数组)有很多相似的地方,一个对象通过一个属性可以获取值,一个数组通过一个字符串下标可以获取值。

1.png

1.png

通过打印一个对象变量与数组变量可看出,对象与数组的结构是挺像的。


记得前面学json时,有个json_decode函数,把JSON 格式的字符串进行解码,它的返回值有两种形式,默认返回一个对象,填写第二个参数返回一个数组。


1.png

1.png

同样的数据既可以以对象的形式返回,又可以以数组的形式返回。通过这我们可以推导出,对象与数组是可以相互转换的。数组与对象的转换实际应用中会用到的。


PHP内置标准类


看上图,打印的对象的类名是“stdClass”,“stdClass”是PHP内置的一个类,我们不用自己去定义它的内容,直接拿来实例化就可以。


1.png

1.png


可见该类内部没有定义任何属性。

但我们还是可以使用该类的属性——不存在的属性。


1.png


1.png


数组转对象:


有了stdClass的帮忙,我们就可以实现数组转对象了,很简单:

1.png

1.png

1.png

数组成功转成对象了。


还有一个更简单的方法:

1.png


第14行代码直接用类型转换符(object),得到的结果是一样的:


1.png


用类型转换符(object)还可以把字符串等其他数据类型转成对象,一般也就数组转对象有实际意义,其他数据类型转对象无意义,应用场景应该是没有。大家感兴趣自己去测试,楠神就不演示了。


还有一点,数组转对象,假如数组的下标是数字的情况:


1.png

1.png

下标“0”也作为类的一个属性了,可这样的属性使用“->”并不方便操作。


1.png

结果是报错的:

1.png

致命的错误,所以只适合纯字符串下标的数组转对象。


本节学习代码》》》