Как проверить, существует ли индекс в моем массиве - PullRequest
0 голосов
/ 07 июня 2018

У меня есть два массива, один показывает все тесты.другой показывает все пройденные викторины.Теперь я хочу показать это для каждого массива, где все списки тестов, которые можно показать, но соответствуют таблице выполненных тестов, если она доступна, вернут статус 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) Мне нужно проверить, существует ли ключ массива o нет.

Я хочу показать массив следующим образом

[
    {
        "id": 4,
        "title": "Digital Marketing",
        "status": true
    },
    {
        "id": 5,
        "title": "Personal Leadership",
        "status": false
    }
]

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Уважаемый, всегда пытайтесь сделать какой-то правильный код.

$bool = false;
if(isset($doneQuiz[$key]['id']) && $value->id === $doneQuiz[$key]['id'] )
    $bool = true;

поместите приведенный выше код перед массивом $getquizId и добавьте переменную $ bool в значение статуса.

Примечание: отметьте $doneQuiz получение в формате массива.

0 голосов
/ 07 июня 2018

Сначала получите идентификатор выполненной викторины, а затем проверьте массив с помощью 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
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...