Как записать данные с PHP-страницы в массив?

167
23 февраля 2019, 12:40

Имеется тест.

В нём вопросы. Задача состоит в том, чтобы запомнить ответ с каждого нажатого radiobutton'а, чтобы в итоге посчитать (сравнить с ответом-константой) количество правильных ответов.

Это нужно сделать на PHP, чтобы в итоге получить многомерный массив типа:

$arResults = array(
'STEPS' => array(
        array(
            'NUMBER' => 1,
            'DURATION' => 340,
            'ANSWERS' => array(2,3)
        ),
        array(
            'NUMBER' => 2,
            'DURATION' => 40,
            'ANSWERS' => array(1)
        ),
        array(
            'NUMBER' => 3,
            'DURATION' => 20,
            'ANSWERS' => array(4)
        )
    )
);

Где Number - это номер слайда, Duration - время за вопросом, ANSWERS - ответы с радио-кнопки.

Новые данные в конец массива добавляются через array_push:

$newArray = array_push( $decode['STEPS'], array( 'NUMBER' => 4, 'DURATION' => 25, 'ANSWERS' => array(3) ) );

Как записать данные (номер вопроса, время, выбранный ответ) с PHP-страницы в многомерный массив?

Answer 1

принимает данные yii2

var btn_deleteChecked = document.getElementById('deleteChecked');
if (btn_deleteChecked) {
    btn_deleteChecked.addEventListener('click', deleteChecked);
}
var btn_showHideChecked = document.getElementById('hideChecked');
if (btn_showHideChecked) {
    btn_showHideChecked.addEventListener('click', showHideChecked);
}
var btn_checkAll = document.getElementById('checkAll');
if (btn_checkAll) {
    btn_checkAll.addEventListener('click', checkAll);
}
//дальше - говнокод
var inputTagsArray = [];
function getInputTags() {
    inputTagsArray = document.getElementsByTagName('input');
    inputTagsArray = Array.prototype.slice.call(inputTagsArray);
}

function getArray(action) {
    getInputTags();
    var checkedInputTagsArray = [];
    inputTagsArray.forEach(function(element) {
        if (element.getAttribute('id')) {
            if (element.checked) {
                checkedInputTagsArray.push(element.getAttribute('id'));
            }
        }
    });
    if (!checkedInputTagsArray[0]) {
        alert("Не было выбрано ни одного изображения");
        return false;
    }
    else {
        if (confirm("Вы уверены что хотите совершить данное действие?")) {
            location.href = "/products/" + action + "/?id=" + checkedInputTagsArray.join("_");
            //я не осилил ajax, потому сделал так (работает)
        }
        else {
            return false;
        }
    }
}
function checkAll() {
    getInputTags();
    inputTagsArray.forEach(function(element){
        if (element.getAttribute('id')) {
             if (element.checked) {
                element.checked = false;
             }
             else {
                element.checked = true;
             }
        }
    });
}
function deleteChecked() {
    getArray("imagedelete");
}
function showHideChecked() {
    getArray("show-hide");
}

вам нужно делать примерно то же самое, только поменять чекбоксы на радиобатоны и собирать, наверное, не идентификатор, а содержимое тегов (номер вопроса, время (скорость?), выбранный ответ).

READ ALSO
Автозагрузка классов + composer + cli mode

Автозагрузка классов + composer + cli mode

Есть такой простой автозагрузчик:

165
С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failed. Как исправить?

С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failed. Как исправить?

С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failedКак мне исправить эту ошибку? Для отправки...

202
Работа с аргументами функции в с++ [закрыт]

Работа с аргументами функции в с++ [закрыт]

функция write_stats, которая принимает два аргумента - набор данных и выводной поток, и до выводного потока записывает 3 статические данные о данных:...

156