Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中自动将十进制转换为数字而不是字符串?_Php_Mysql_String_Floating Point_Decimal - Fatal编程技术网

如何在php中自动将十进制转换为数字而不是字符串?

如何在php中自动将十进制转换为数字而不是字符串?,php,mysql,string,floating-point,decimal,Php,Mysql,String,Floating Point,Decimal,如何在php中将十进制数据类型自动转换为数字而不是字符串 我将数据字段从双精度改为十进制(4,2)。我有很多像这样的支票 if($row->field) 和$row->field==0.00。当它是双倍的时候没关系。但当我在php中得到decimal时,它是get string type,而'0.00'是真的 “在$row->field之前添加(float)”不是我的方式,因为我更改了很多字段和太多使用它的地方 我想找到一个更好的方法,而不是改变太多的代码行。可能是一些扩展或其他东西。为什么不从

如何在php中将十进制数据类型自动转换为数字而不是字符串

我将数据字段从双精度改为十进制(4,2)。我有很多像这样的支票

if($row->field)

和$row->field==0.00。当它是双倍的时候没关系。但当我在php中得到decimal时,它是get string type,而'0.00'是真的

“在$row->field之前添加(float)”不是我的方式,因为我更改了很多字段和太多使用它的地方


我想找到一个更好的方法,而不是改变太多的代码行。可能是一些扩展或其他东西。

为什么不从MySQL本身返回一个布尔表达式作为查询的一部分

SELECT decimal_column <> 0.00 as bool_expression FROM table;
从表中选择十进制列0.00作为布尔表达式;

然后测试如下表达式:
if($row->bool\u expression)

为什么不从MySQL本身返回一个布尔表达式作为查询的一部分

SELECT decimal_column <> 0.00 as bool_expression FROM table;
从表中选择十进制列0.00作为布尔表达式;

然后测试如下表达式:
if($row->bool\u expression)

示例
if($row->field)
总是更好地编码为
if($row->field!=0)
或者
if($row->field>0)
如果这就是它的意思。我知道,但代码是编写的,现在我需要重构这个示例
if($row->field)
总是更好地编码为
如果($row->field!=0)
如果($row->field>0)
如果这就是它的意思。我知道,但代码是编写的,现在我需要重构。因为我想找到一种更好的方法,而不是更改太多的代码行。可能是一些扩展或smth其他。如果只测试(并使用旧列名),则此答案中提供的机制将起作用,但如果使用值本身,则不会起作用。无论哪种方式,数据层的更改似乎都需要重构。在我看来,它与活动记录一起使用,并且比更改sql查询更容易更改代码,如
if($row->field!=0)
。不过,谢谢你的回答;)因为我想找到一个更好的方法,而不是改变太多的代码行。可能是一些扩展或smth其他。如果只测试(并使用旧列名),则此答案中提供的机制将起作用,但如果使用值本身,则不会起作用。无论哪种方式,数据层的更改似乎都需要重构。在我看来,它与活动记录一起使用,并且比更改sql查询更容易更改代码,如
if($row->field!=0)
。不过,谢谢你的回答;)