RecentForce99
@RecentForce99

Как отсортировать массив с данными?

Есть массив с данными и нужно получить другой массив, в котором на каждый индекс приходит только значение answer-num или answer-num1-num2.

Array
(
[0] => Array
(
[question_id] => 1
[answer-0] => 1
)

[1] => Array
(
[question_id] => 2
[answer-1] => 6
)

[2] => Array
(
[question_id] => 3
[answer-2] => 12
)

[3] => Array
(
[question_id] => 4
[answer-3] => 13
)

[4] => Array
(
[question_id] => 5
[answer-4] => 18
)

[5] => Array
(
[question_id] => 6
[answer-5-2] => 22
[answer-5-3] => 23
[answer-5-4] => 24
)

[6] => Array
(
[question_id] => 7
[answer-6] => 27
)

[7] => Array
(
[question_id] => 8
[answer-7] => 32
)

[8] => Array
(
[question_id] => 11
[answer-8] => 35
)

[9] => Array
(
[question_id] => 12
[answer-9] => 41
)

)

Таким должен быть результат:
Array
(
[0] => 1
[1] => 6
[2] => 12
[3] => 13
[4] => 18
[5] => 22
[6] => 23
[7] => 24
[8] => 27
[9] => 32
[10] => 35
[11] => 41
)

То, как я пытался это реализовать, до этого и обычным циклом for(). Проблема этого кода в громоздкости, а так же не получается задать правильный индекс после answer-num1-num2, потому что нужно перебрать ещё дополнительное значение, второй цикл не позволяет правильно задать индекс, из-за чего одно значение заменяет другое и в итоге выводятся не полные данные.
function getScore()
    {


        $data = $_POST['data'];
        $db = DB::connect();
        $n = 0;
        $i = 0;
        foreach ($_POST['data'] as $val)
        {
                if(isset($val['answer-'.$i]))
                {
                    $n++;
                    $sql = "SELECT `score` FROM `answers` WHERE `id` = ?";
                    $stmt = $db->prepare($sql);
                    $stmt->execute([$val['answer-'.$i]]);
                    $result[$n] = $stmt->fetch(PDO::FETCH_NUM);

                }
                else
                {
                    for ($j = 0;$j <= 6;$j++)
                    {
                        if(isset($val['answer-'.$i.'-'.$j]))
                        {
                            $sql = "SELECT `score` FROM `answers` WHERE `id` = ?";
                            $stmt = $db->prepare($sql);
                            $stmt->execute([$val['answer-'.$i.'-'.$j]]);
                            $result[$n] = $stmt->fetch(PDO::FETCH_NUM);
                        }
                    }
                }

            $n++;
            $i++;
        }

        return $result;

    }
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
13 мая 2024, в 12:07
50000 руб./за проект
13 мая 2024, в 11:56
35000 руб./за проект
13 мая 2024, в 11:46
35000 руб./за проект