我正在运行一个相当简单的脚本,该脚本应该从数据库返回一组结果,然后将结果解析为主干集合。
在本地返回一个对象对象,即
{
{},
{},
{},
}
在登台服务器上,返回一个对象数组 - 这是正确的,所以我得到一个看起来像这样的响应,
[
{},
{},
{},
]
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);
我以前从未见过这样的事情。
答案 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);
此外,您的环境之间的差异似乎是您正在处理的数据