我有两个数组 一个显示所有的测验。另一个显示所有采取的测验。现在我喜欢为每个数组显示这个,其中所有测验列表都要显示但是匹配完成的测验表,如果可用,它将返回状态为true。我正在使用array_key_exist,但显示错误。
$getquizId = [
'id' => '',
'title' => '',
'status' => ''
];
$allquizId = [];
$totalQuiz = Quize::where('course_id', $course_id)->with('resources')->get();
$doneQuiz = QuizProgress::where('user_id', $user_id)->where('course_id', $course_id)->with('course')->get();
$progress = (count($doneQuiz) / count($totalQuiz)) * 100;
foreach ($totalQuiz as $key => $value) {
$getquizId = [
'id' => $value->id,
'title' => $value->title,
'status' => (array_key_exists($key, $doneQuiz) ? ($value->id == $doneQuiz[$key]['id'] ? true : false) : false)
];
// if (array_key_exists($key, $doneQuiz)) {
// ($value->id == $doneQuiz[$key]['quiz_id'] ? $getquizId['status'] = 'true' : $getquizId['status'] = 'false');
// }
array_push($allquizId, $getquizId);
}
return $allquizId;
在这里(array_key_exists($key, $doneQuiz) ? ($value->id == $doneQuiz[$key]['id'] ? true : false) : false)
我需要检查数组键是否存在。
我想像这样显示数组
[
{
"id": 4,
"title": "Digital Marketing",
"status": true
},
{
"id": 5,
"title": "Personal Leadership",
"status": false
}
]
答案 0 :(得分:1)
首先获取完成的测验的id,然后使用in_array检查数组 但我建议你建立正确的关系
$doneQuiz = QuizProgress::where('user_id', $user_id)->where('course_id', $course_id)->with('course')->pluck('quiz_id')->toArray();
$getquizId = [
'id' => $value->id,
'title' => $value->title,
'status' => in_array($value->id, $doneQuiz) ? true : false
];
答案 1 :(得分:0)
亲爱的,总是试着做一些正确的代码。
$bool = false;
if(isset($doneQuiz[$key]['id']) && $value->id === $doneQuiz[$key]['id'] )
$bool = true;
将上面的代码放在$getquizId
数组之前,并在状态值中添加$ bool变量。
注意:检查$doneQuiz
进入阵列格式。