【问题标题】:array_merge(): Argument #1 is not an array in laravel 5.5array_merge():参数 #1 不是 laravel 5.5 中的数组
【发布时间】:2018-10-05 13:31:44
【问题描述】:

我遇到了一些问题,这与 laravel 中的 array_merge 有关 我的控制器代码方法:

    public function isConnectedMA()
{
    $user_id = Auth::user()->id;
    if(!empty($user_id)) {
        $isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get();
        $isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get();
    }
        $MergeArray = array_merge($isConnectedM,$isConnectedA);
    $resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
    return Response::json($resultArray,200);

}

我面临的错误是

array_merge(): 参数 #1 不是数组

我不知道我错在哪里 任何帮助将不胜感激!

【问题讨论】:

  • 你可以检查var_dump($isConnectedM);var_dump($isConnectedA);

标签: php arrays laravel


【解决方案1】:

使用toArray()collections 转换为数组

$isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get()->toArray();
$isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get()->toArray();

【讨论】:

  • 好的,我已经解决了我的问题,但我又面临一个问题
  • 你可以看到我设置了一个条件 if(!empty) 之后我想检查它是否为空并显示某种消息,但我正在尝试这样做,但我得到了无法访问的语句.
  • @shahzad1122 是的,继续,解释你的新问题
【解决方案2】:

在 laravel ->get(); 返回集合对象,这里应该使用 ->toArray()

【讨论】:

    【解决方案3】:

    $isConnectedM 和 $isConnectedA 是 Collection 对象。 Response::json($collection,200);自动收集对象到json转换

    $MergeArray = $isConnectedM->merge($isConnectedA) ;
    $resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
    return Response::json($resultArray,200);
    

    【讨论】:

    • 好的,我已经解决了我的问题,但我又面临一个问题
    • 你可以看到我设置了一个条件 if(!empty) 之后我想检查它是否为空并显示某种消息,但我正在尝试这样做,但我得到了无法访问的语句.
    • 我不太了解。 ` if(!empty) ` 集合对象 .is ... → if($isConnectedM->isEmpty())if($isConnectedM->count() > 0)
    【解决方案4】:

    @shahzad, array_merge 问题的原因我们必须传递两个数组,如果我们没有传递那么它会抛出一个错误。

     public function isConnectedMA() {
        $user_id = Auth::user()->id;
        // If user id is not passed, return or redirect to login page.
        if (empty($user_id) {
            // TODO : Do logic to retun
            $resultArray = ['status' => 0, 'message' => 'OOPS! seems like user is not logged in.', 'dataArray' => []];
            return Response::json($resultArray, 401);
        }
    
        $isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get()->toArray();
        $isConnectedA = DB::table('user_mlc_aweber')->where('user_id', $user_id)->get()->toArray();
        $MergeArray = array_merge($isConnectedM,$isConnectedA); // array_merge((array)$isConnectedM, (array)$isConnectedA);
        $resultArray = ['status' => 1, 'message' => 'Template uploaded!', 'dataArray' => $MergeArray];
        return Response::json($resultArray,200);
    }
    

    参考 arry_merge - http://php.net/manual/en/function.array-merge.php

    【讨论】:

    • if(empty($user_id) 条件不继续
    • @shahzad1122,然后打印/调试 $user_id 的值是什么。并在数据库中检查是否有给定 id 的记录。在合并两个数组之前,检查这些的输出是什么 - $isConnectedM = DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get()
    【解决方案5】:

    $isConnectedM$isConnectedA 不是 arrays。您还可以使用typecastobject 转换为array

    $isConnectedM = (array) DB::table('user_mlc_mailchimp')->where('user_id', $user_id)->get();
    $isConnectedA = (array) DB::table('user_mlc_aweber')->where('user_id', $user_id)->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多