[英]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.