首页 > 解决方案 > 如何检查我的数组中是否存在索引

问题描述

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

标签: phparrayslaravel

解决方案


首先得到完成的测验的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
];

推荐阅读