Php 为什么int值在从数据库读取后变成字符串?

Php 为什么int值在从数据库读取后变成字符串?,php,database,yii,Php,Database,Yii,在我的Yii框架项目中,当我从列数据类型都是数字的数据库中使用活动记录读取数据时,我使用var\u dump获得字符串类型值。我感到非常困惑。因为php是一种动态类型化语言,所以接口上的数据类型常常令人费解 通常,当从数据库中检索数据时,驱动程序不会费心将每个值转换为php中的类型,而php中的类型与mysql中的数据类型最为相似(或者你也可以说,php不够智能,无法自动转换);你必须自己做转换。幸运的是,这样做很容易: $yourvar = (int)$yourvar; Yii CActiv

在我的Yii框架项目中,当我从列数据类型都是数字的数据库中使用活动记录读取数据时,我使用
var\u dump
获得字符串类型值。我感到非常困惑。

因为php是一种动态类型化语言,所以接口上的数据类型常常令人费解

通常,当从数据库中检索数据时,驱动程序不会费心将每个值转换为php中的类型,而php中的类型与mysql中的数据类型最为相似(或者你也可以说,php不够智能,无法自动转换);你必须自己做转换。幸运的是,这样做很容易:

$yourvar = (int)$yourvar;

Yii CActiveRecord在执行查询时动态创建模型变量,默认情况下它们是字符串类型。它们使用_get&_setmagic方法动态创建,并且不设置类型,因此它们是字符串类型


由于PHP不是强类型语言,所以您不必担心这一点,您可以更改它们的类型。

PHP不是“非类型化”的,这意味着它没有类型。PHP是弱类型的,所以字符串也是一个数字。只是不要太困惑于得到一个字符串,它也是一个数字。