laravel / php在不同的环境中使用额外的双引号响应不同的json数据

时间:2014-08-03 08:46:57

标签: php json laravel

在我的Mac中

$result = DB::select("select count(*) as count from table where id=1");
return Response::json($result[0]->count);

我在js中得到0

// PHP 5.4.24  
0

但是当我将我的代码发布到Centos中时,我在js中得到“0”甚至“”0“”

// PHP 5.5.14
"0" //(sometimes ""0"")

它们完全相同。怎么了?


修改

我发现另一个问题我认为是相关的

// mac, PHP 5.4.24, Lavavel 4.2
Auth::user()->is_admin === 1  // true

// centos, PHP 5.5.14, Lavavel 4.2
Auth::user()->is_admin === 1  // false
Auth::user()->is_admin == 1  // true

is_admin的列类型是int(11)

2 个答案:

答案 0 :(得分:1)

在返回JSON以获得预期类型时,您可能希望执行数字检查。

return Response::json($result[0]->count, 200, [], JSON_NUMERIC_CHECK);

答案 1 :(得分:0)

我自己解决了。因为我使用的是php-mysql而不是php-mysqlnd。 php-mysqlnd从mysql返回本机数据类型,但php-mysql返回一些数据类型,如int / float as string。

所以我

`yum remove php-mysql'

然后

'yum install php-mysqlnd'

一切都很顺利!