代码之家  ›  专栏  ›  技术社区  ›  Rzj Hayabusa

如何在Laravel控制器中合并两个对象数组?

  •  0
  • Rzj Hayabusa  · 技术社区  · 5 年前

    我有这些函数来调用使用DB query的数据集 数据A 数据B .

    现在我设法显示了输出,但不知怎么的,数据A不能合并到数据B。我的代码如下。

    命名空间:

    use \stdClass;
    

    public function find($user = null) {
        if($user)
        {
            // Data A
            $sql            = "SELECT * FROM TABLE WHERE ID = '".$user."' "; 
            $arr            = DB::connection('mysql')->select($sql);
            $resultData     = new \stdClass();
    
            foreach ($arr as $key => $value) 
            {
                $resultData->$key = $value; // Extract Data A table
            }
    
    
            // Data B
            $url    = "http://localhost/data/curl.php?value=".$user; 
            $ch     = curl_init();
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_URL,$url);
            $result = curl_exec($ch);
            curl_close($ch);
            $row    = json_decode($result, true); 
    
            foreach ($row as $key => $value) 
            {
                $resultData->$key = $value; // Extract Data B 
            }  
    
            dd($resultData);
            return true;
        }
        return false;
    }
    

    我的目标是将这两组数据(A&B)合并为一组。

    如果我单独显示输出,我现在在浏览器中得到的是这样的结果。当我合并时,它只显示数据B:

    数据A

    {#310 
      +"0": {#213 
        +"id": "1"
        +"name": "MIKE"
        +"acc_no": "AAA001"
        +"email": "mike@col.com" 
      }
    }
    

    {#310 
      +"0": "CLERK"
      +"TITLE": "CLERK"
      +"1": "Clerk, IT Department"
      +"POSITION": "Clerk, IT Department"
      +"2": "Rozaimi Bin Zamahri"
      +"SECTION": "Office"
    }
    

    感谢有人能帮我。谢谢。

    2 回复  |  直到 5 年前
        1
  •  1
  •   TsaiKoga    5 年前

    问题1: 如果您想使用 DB::select 使用params,您可以这样做:

    $sql  = "SELECT * FROM TABLE WHERE ID = ? "; 
    $arr  = DB::connection('mysql')->select($sql, [$user]);
    

    问题2: 因为您使用的是DB select方法,所以它将返回一个包含对象的数组嵌套。您需要先获取对象,然后执行以下操作:

    $arr = DB::connection('mysql')->select($sql)[0];
    

        2
  •  0
  •   Paras Raiyani    5 年前

    试试这个:-

        $data1=(object)['a','b'];
        $data2=(object)['c','d'];
        $result = (object) array_merge(
            (array) $data1, (array) $data2);
    
        print_r($result);