簡體   English   中英

如何在 Laravel 控制器中合並兩個對象數組?

[英]How to merge two arrays of objects in Laravel controller?

我有這些函數來調用數據集,這些數據集對Data A使用 DB 查詢,對Data B使用 CURL。

現在我設法顯示輸出,但不知何故數據 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)合並為一組。

如果我單獨顯示輸出,我現在在瀏覽器中得到的就是這樣。 當我組合它時,它只顯示 Data B :

數據A

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

數據B

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

感謝有人可以幫助我。 謝謝。

問題1:不要只用params連接sql字符串,它有SQL注入問題,如果你想使用帶有params的DB::select ,你可以這樣做:

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

問題 2:因為您使用的是 DB select 方法,它會返回一個帶有對象的數組嵌套。 你需要先得到對象,做這樣的事情:

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

然后您可以通過循環合並它們,或者只是將它們轉換為數組並合並它們。

嘗試這個:-

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

    print_r($result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM