【问题标题】:Larave error: array_merge(): Expected parameter 2 to be an array, string givenLaravel 错误:array_merge():预期参数 2 是一个数组,给定字符串
【发布时间】:2020-12-13 13:07:57
【问题描述】:

大家好 Laravel 开发人员: 以下是 dd(session('cart')); 的输出:

array:2 [▼
  17 => array:14 [▼
    "user_id" => 1
    "nr" => "001"
    "check_id" => 17
    "kommission" => "Ribnev Prömski"
    "quantity" => 1
    "price" => "72.95"
    "shipping_cost_id" => 28
 
  ]
  18 => array:14 [▼
    "user_id" => 1
    "nr" => "002"
    "check_id" => 17
    "kommission" => "Ribnev Prömski"
    "quantity" => 1
    "price" => "78.95" 
    "shipping_cost_id" => 28
 
  ]
]

稍后 id 喜欢将购物车保存为订单表中的单行。 在准备这个... 当我执行以下操作时:

foreach (session('cart') as $id => $data ) {
    dump($data['nr']);
}

浏览器显示(非常短)foreach "001" ($data['nr']) 的第一次迭代,然后 我收到此错误:

array_merge(): Expected parameter 2 to be an array, string given.

我的问题:参数2是什么意思?

【问题讨论】:

  • array_merge(parameter 1, parameter 2) ...第二个参数的值在某处被赋予一个字符串而不是一个数组。
  • 在更详细的@PaulT 版本中。注释,函数的参数是调用函数时逗号之间的值。 array_merge 代码在哪里?
  • 但是为什么你在这里得到array_merge(),你确定这行dump($data['nr']);会抛出这个错误吗?
  • @user3783243 好像是内置的laravel:
  • \vendor\laravel\framework\src\Illuminate\View\Factory.php } 公共函数 make($view, $data = [], $mergeData = []) { $path = $this ->finder->find($view = $this->normalizeName($view));

标签: php laravel


【解决方案1】:

你可以这样做:

$data = collect(session('cart'))->map(function ($item, $key) {
           return $item['nr'];
        });

另一种方式:

你可以使用你想要的钥匙:

$collection = collect(session('cart'));

$data = $collection->pluck('nr')
       ->all();

更多关于收藏的信息,您可以在这里查看:

https://laravel.com/docs/8.x/collections

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2020-09-25
    • 2022-06-22
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2017-01-02
    相关资源
    最近更新 更多