【发布时间】:2023-03-23 06:15:01
【问题描述】:
在我的 Yii 框架项目中,当我使用 Active Record 从列数据类型均为 numerical 的数据库中读取数据时,我使用 var_dump 获取字符串类型值。我感到很困惑。
【问题讨论】:
-
PHP 是弱类型的,所以字符串也是数字。只是不要对获取字符串感到困惑,它也是一个数字。
在我的 Yii 框架项目中,当我使用 Active Record 从列数据类型均为 numerical 的数据库中读取数据时,我使用 var_dump 获取字符串类型值。我感到很困惑。
【问题讨论】:
由于 php 是一种动态类型的语言,接口中的数据类型通常有点令人费解。
通常当从数据库中检索数据时,驱动程序不会费心将每个值转换为 php 中最类似于 mysql 中的数据类型的类型(或者您也可以说,php 不够智能如此自动);您必须自己进行转换。幸运的是,这样做真的很容易:
$yourvar = (int)$yourvar;
【讨论】:
Yii CActiveRecord 在我们执行查询时动态创建模型变量,默认情况下它们是字符串类型的。他们使用 _get & _set 魔术方法动态创建,并且不设置类型,所以是字符串类型。
由于 PHP 不是强类型语言,所以你不必担心这个,你可以改变它们的类型。
【讨论】: