本地开发和升级之间的奇怪结果

时间:2014-12-11 16:08:18

标签: php arrays object laravel

我正在运行一个相当简单的脚本,该脚本应该从数据库返回一组结果,然后将结果解析为主干集合。

在本地返回一个对象对象,即

{
  {},
  {},
  {},
}

在登台服务器上,返回一个对象数组 - 这是正确的,所以我得到一个看起来像这样的响应,

[
    {},
    {},
    {},
]

2个实例运行相同的代码,PHP版本和laravel的相同安装,为什么我的本地机器返回一个对象而我的远程机器返回一个对象?

我正在做的就是跑步,

$projects = array_unique(array_merge($owned_by_me, $managed_by_me, $sold_by_me, $owned_by_my_organisation, $client_projects, $collab_projects), SORT_REGULAR);
return Response::json($projects, 200);

我以前从未见过这样的事情。

2 个答案:

答案 0 :(得分:0)

array_unique()始终返回array。很可能Laravel配置中有一些东西。我不知道Response::json()是如何工作的,但是如果它使用json_encode()本机PHP函数,那么可以通过向第二个参数添加标志JSON_FORCE_OBJECT来告诉它返回对象而不是数组。也许你可以在配置文件中找到它。

答案 1 :(得分:0)

我猜测,因为array_unique会留下像它们一样的索引,所以它无法转换为数组。假设您传入此数组:

array('foo', 'foo', 'bar')

你会得到:

array('foo', 'bar')

实际上是:

array(0 => 'foo', 2 => 'bar')

因此,由于索引计数的差距,它将被转换为JSON对象。

使用array_values来"重新排序"索引:

$projects = array_unique(array_merge($owned_by_me, $managed_by_me, $sold_by_me, $owned_by_my_organisation, $client_projects, $collab_projects), SORT_REGULAR);
$projects = array_values($projects);
return Response::json($projects, 200);

此外,您的环境之间的差异似乎是您正在处理的数据