如何在 Laravel 中合并一个数组元素?

3

我是 Laravel 的新手。我想要把两个多维数组合并成一个数组。我尝试使用 array_merge 函数,但它没有生效。我想要合并数组[0]位置的值和数组[1]位置的值。

这是我的当前数组:

Array
(
  [0] => Illuminate\Support\Collection Object
      (
          [items:protected] => Array
              (
                  [0] => stdClass Object
                      (
                          [product_id] => 2
                          [sale_datetime] => 2018-10-15 16:33:59
                          [name] => Tea
                          [totalqty] => 3
                      )
                  [1] => stdClass Object
                      (
                          [product_id] => 2
                          [sale_datetime] => 2018-10-16 10:44:14
                          [name] => Tea
                          [totalqty] => 5
                      )
                 )
      )
  [1] => Illuminate\Support\Collection Object
      (
          [items:protected] => Array
              (
                  [0] => stdClass Object
                      (
                          [product_id] => 3
                          [sale_datetime] => 2018-11-15 18:04:36
                          [name] => Coffee
                          [totalqty] => 20
                      )
              )
      )
)

我想要创建一个像下面这样的数组:
Array
(
  [0] => Illuminate\Support\Collection Object
      (
          [items:protected] => Array
              (
                  [0] => stdClass Object
                      (
                          [product_id] => 2
                          [sale_datetime] => 2018-10-15 16:33:59
                          [name] => Tea
                          [totalqty] => 3
                      )

                  [1] => stdClass Object
                      (
                          [product_id] => 2
                          [sale_datetime] => 2018-10-16 10:44:14
                          [name] => Tea
                          [totalqty] => 5
                      )
                  [2] => stdClass Object
                      (
                          [product_id] => 3
                          [sale_datetime] => 2018-11-15 18:04:36
                          [name] => Coffee
                          [totalqty] => 20
                      )
                 )
      )
)

你目前尝试了什么?请发布代码。 - Shahnawaz Kadari
$returnSaleData = array(); $sd = array(); for ($i = 0; $i < count($Details); $i++) { $sd[] = $Details[$i]; $returnSaleData = array_merge($returnSaleData, $sd); } 我在Smartpal尝试了这段代码。 - Bhoomi Patel
请展示一下你的 $Details 数组好吗? - Oleg Nurutdinov
3个回答

0

你的代码输出的是一个对象而不是直接的数组,需要使用foreach循环,然后使用array_merge。

例如,假设你的输出存储在变量$array中。

foreach($array as $arrays){
  array_merge('$arrays', $array_you_want_to_merge);
}

注意:你的代码结构不够清晰,所以可能无法正常工作,但它会给你一个思路。

0

试试这段代码

$a = $arr[0];
$b = $arr[1];
$newArr= array();
$newArr["items:protected"] = array_merge($a["items:protected"],$b["items:protected"]);

1
解释一下为什么他们应该尝试这段代码会有所帮助。 - Nigel Ren

0

你正在使用 Laravel 的集合。虽然你可以使用默认的 PHP 函数,如 array_merge,但为什么不使用 Laravel 的方式,通过使用 merge

从文档中复制 + 粘贴:

$collection = collect(['product_id' => 1, 'price' => 100]);

$merged = $collection->merge(['price' => 200, 'discount' => false]);

$merged->all();

// ['product_id' => 1, 'price' => 200, 'discount' => false]

或者如果您想要合并两个集合:

$original = new Collection(['foo']);

$latest = new Collection(['bar']);

$merged = $original->merge($latest); // Contains foo and bar.

摘自这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接