【问题标题】:Laravel - 'array_merge(): Argument #2 is not an array' occurring when i'm not using an array anymoreLaravel - 'array_merge():参数#2不是数组'当我不再使用数组时发生
【发布时间】:2018-03-07 15:51:24
【问题描述】:

我使用数组将数据从控制器传回视图,但现在已切换为仅使用字符串,但弹出此错误。

" array_merge(): 参数 #2 不是数组"

我什至不再使用数组了,我已经完成了 php artisan clear:cache 以防有一些我不知道的缓存。我是 laravel 的新手,但我发现的所有结果都是与错误地使用数组的人打交道,而我只是传递了一个简单的字符串。

有人可以帮忙吗?下面是我的代码

控制器中的代码部分

else {
                $result = 'That email belongs to an existing referrer.';
                return view('admin.invalidReferrer', $result);

invalidReferrer.blade.php 中的代码部分 @extends('admin.admin')

@section('results')

<h4>{{ $result }}</h4>


@stop

以前的控制器解决方案

else {
    $result = ['That email belongs to an existing referrer.'];
    return view('admin.invalidReferrer', compact('result'));

以前的刀片解决方案

@section('results')

<h4>{{ $result[0] }}</h4>

@stop

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    只使用前面的解决方案,但删除多余的数组分配。

    而不是使用:

    $result = ['That email belongs to an existing referrer.']; // shorthand array assignment of string to index 0
    // ^ unneeded array assignment ^
    

    直接赋值字符串即可:

    $result = 'That email belongs to an existing referrer.';
    return view('admin.invalidReferrer', compact('result'));
    

    然后照常使用导入的数据:

    @section('results')
    
    <h4>{{ $result }}</h4>
    
    @stop
    

    【讨论】:

    • @Unifx OP 可能不知道 [] 是一个数组赋值,但是在第二个参数中直接使用它也可以正常工作
    • 感谢您的回复。我之前尝试过它并且它有效,但是 compact() 没有将变量作为数组返回,这仍然比传回字符串效率低?
    • @AndrewMMG 但您不能直接在view 中传递单个字符串,因为在传递视图后您不能在内部委托一个简单的字符串。它需要在密钥对值内。使用compact 或使用['result' =&gt; 'string here']
    • 哦,好的,谢谢您的洞察力。在 laravel 文档中,它有一个示例,它只使用了 return view('name', $data) 所以我在假设我可以操作的情况下进行操作。这些解决方案中的任何一个是否比另一个更有效?例如:使用密钥对值是否比使用紧凑型更有效?
    • @AndrewMMG 我认为它没有任何区别,期望一个是函数,一个是另一个普通数组赋值。并且很可能示例中的$data 包含密钥对值。你不能直接传递一个单独的字符串,它需要是一个数组。只需按照 API,它已经说在那里 laravel.com/api/5.2/Illuminate/Routing/…,它已经在那里说,第二个参数需要一个数组
    【解决方案2】:

    只需按照以下说明操作:

    1. 从引导程序中删除 config.phpservice.php 文件。
    2. 运行 php artisan serve
    3. php artisan serve 后在终端上运行 ctrl+c
    4. 并运行 composer update

    为我修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多