合并两个Laravel Collections保留原始密钥

use*_*774 4 laravel-5

我有以下两个集合:

Collection {#402 ?
  #items: array:1 [?
    4007 => "4007 - Container Deposit - 18.00 Drum - In Stock: 0.00"
  ]
}

Collection {#398 ?
  #items: array:3 [?
    1000 => "1000 - Acetone - 162.00 KG - In Stock: 10000.00"
    1001 => "1001 - Acetone - 15.80 KG - In Stock: 0.00"
    24662 => "24662 - 1L Untd Antifreeze Orange FO2272A60(Prem - 1.00 Litre - In Stock: 0.00"
  ]
}
Run Code Online (Sandbox Code Playgroud)

使用Laravel的集合合并功能:

$merged = $ref_prod_containers->merge($ref_cust_prod);
dd($merged);
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Collection {#397 ?
  #items: array:4 [?
    0 => "4007 - Container Deposit - 18.00 Drum - In Stock: 0.00"
    1 => "1000 - Acetone - 162.00 KG - In Stock: 10000.00"
    2 => "1001 - Acetone - 15.80 KG - In Stock: 0.00"
    3 => "24662 - 1L Untd Antifreeze Orange FO2272A60(Prem - 1.00 Litre - In Stock: 0.00"
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是我希望保留原始密钥.合并功能正在删除它们并替换为0,1,2,3.

谢谢,朱利安

小智 17

您可以使用Laravel Collection的union()方法.当心,这表现不同merge()重复键打交道时:如果相同的密钥是存在于$array1$array2你去$merged = $array1->union($array2),那么值$array1将在最后$merged收集和价值$array2将被丢弃(Laravel联盟文件).

  • 这也反映了php的数组联合运算符(+)的行为. (4认同)