天天看点

php 集合转数组,php – Laravel集合将数组转换为对象

问题是filter()方法不会重新生成基础集合数组.所以,Collection仍然代表一个数组,只是你的数组看起来像这样:

[

4 => Object4,

7 => Object7,

]

虽然这是PHP中完全有效的数组,但这不是JSON中的正确数组.由于这不能在JSON中表示为数组,因此它将转换为JSON中的对象.

为了在JSON中将其正确表示为数组,您只需要重新生成Collection数组.适当的方法是values()方法.它只是在底层数组上调用array_values.这将转换上面的数组:

[

0 => Object4,

1 => Object7,

]

现在,这是一个正确的数字索引数组,JSON可以理解并将其视为数组而不是对象.

虽然flatten可能适用于这种特殊情况(你的Collection是Eloquent Models的集合),但它实际上并不是正确的方法,并且可能导致意想不到的后果.此外,它还将执行许多不需要的额外逻辑.你最好的选择是使用正确的方法来实现你想要实现的目标,那就是values()方法.

$obj = Cars::with('brand')->orderBy('id')->get();

return $obj->filter(function($value, $key)

{

return $value->display == true;

})

->values();