Laravel split()返回数组和对象的混合

时间:2017-11-08 13:10:41

标签: php laravel

我试图将split数组分成两部分。

$collection = collect( [1, 2, 15, 16] );

$groups = $collection->split( 2 );

结果是......混合:

(2) [Array(2), {…}]
    0: Array(2)
        0: 1
        1: 2
        length: 2
        __proto__: Array(0)
    1: 
        2: 15
        3: 16
        __proto__: Object
    length: 2
    __proto__: Array(0)

我不确定这是一个错误还是我遗漏了一些东西。如果我分成更多的组,第一个组总是一个数组,其他组是对象。为什么会这样做?如何使输出类型保持一致?

P.S。如果集合碰巧是带有数字索引的数组,则快速解决方案是使用array_chunk( $collection, 2 ),如本例所示。根据下面的答案,如果索引不是数字,则不应出现此问题。

3 个答案:

答案 0 :(得分:2)

这是一个明显的例子:

$a = [[1,2], [2 => 2, 3 => 3]];
echo json_encode($a);

输出是:

[[1,2],{"2":2,"3":3}]

第一个元素是数组,因为中的键是零索引,第二个是对象,因为其中的键是零索引。

答案 1 :(得分:1)

不,你可能错过了一些东西。 如果您拆分集合,结果将是集合的集合:

Illuminate\Support\Collection {#1178
#items: array:2 [
    0 => Illuminate\Support\Collection {#1177
      #items: array:2 [
        0 => 1
        1 => 2
      ]
    }
    1 => Illuminate\Support\Collection {#1156
      #items: array:2 [
        2 => 15
        3 => 16
      ]
    }
  ]
}

答案 2 :(得分:-1)

您还需要调用$groups->toArray()方法。