如何在我的数组中检查索引是否存在

时间:2018-06-07 04:46:51

标签: php arrays laravel

我有两个数组 一个显示所有的测验。另一个显示所有采取的测验。现在我喜欢为每个数组显示这个,其中所有测验列表都要显示但是匹配完成的测验表,如果可用,它将返回状态为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
    }
]

2 个答案:

答案 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进入阵列格式。