var_export($res) 是一個陣列,如下所示。
array(0 =>(object) array('user' => NULL,
'courseId' => 18,),
1 =>(object) array('user' =>(object) array('id' => 1,
'name' => 'admin',
'files' => NULL,),
'courseId' => 1,),
)
在此陣列中的每個索引處,我需要count使用來計算courseId并添加一個新專案,稱為count每個索引。我使用了下面的代碼。預期的最終結果是一個物件陣列,而不是物件的物件。
$res=json_decode($response);
foreach ($res as $key ) {
$count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
$res['count'] = $count;
}
return response()->json(['data' => $res,'statusCode' => 200], 200);
上面的代碼顯示了下面的資料。它count作為陣列中的新索引添加,而不是將其作為新項添加到陣列的每個索引中。此外,它以物件的物件形式回傳結果。我該如何解決這個問題?
{
"0": {
"user": null,
"courseId": 18
},
"1": {
"user": {
"id": 1,
"name": "admin",
"files": null
},
"courseId": 1
},
"count": 1
}
預期的最終結果:
[
{
"user": null,
"courseId": 18,
"count": 20
},
{
"user": {
"id": 1,
"name": "admin",
"files": null
},
"courseId": 1,
"count": 10
}
]
uj5u.com熱心網友回復:
在您的 foreach 回圈中,$key您的每個物件都包含courseId.
與其添加count到$res,不如$key像這樣添加:
foreach ($res as &$key ) {
$count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
$key->count = $count; // set it to $key instead of $res
}
如果您希望結果是陣列而不是物件,請true作為第二個引數傳遞給json_decode像這樣:
$res = json_decode($response, true); // associative array instead of object
然后編輯 foreach 以將其作為陣列處理:
foreach ($res as $key ) {
$count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
$key['count'] = $count; // set it to $key instead of $res
}
uj5u.com熱心網友回復:
在您的情況下,您要設定計數欄位$key而不是$res
您的 foreach 回圈應如下所示:
foreach ($res as $key ) {
$count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
$key->count = $count;
}
這將輸出:
{
"0": {
"user": null,
"courseId": 18,
"count": 20
},
"1": {
"user": {
"id": 1,
"name": "admin",
"files": null
},
"courseId": 1,
"count": 10
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384980.html
