Альтернатива многомерному ассоциативному массиву PHP

#php #multidimensional-array #associative-array

#php #многомерный массив #ассоциативный массив

Вопрос:

В настоящее время у меня есть класс отчетов, который извлекает большую серию данных из моей базы данных и форматирует их в 4 мерный массив для возврата. Это работает нормально, но я боюсь, что это не лучший способ. Должен ли я использовать JSON, XML, интерфейсы и т.д…

В принципе, каков наилучший способ вернуть эти данные?

Вот пример того, как я использую многомерный ассоциативный массив для возврата данных:

 $results[$teacherID][$studentID][$subject][$testID]
  

и примерное представление структуры:

 Array
(
[17520] => Array
    (
        [01356] => Array
           (
                ["Math"] => Array
                     (
                           [0130] => 75.2
                           [0215] => 76.8
                     )
                ["Science"] => Array
                     (
                           [0130] => 85.2
                           [0215] => 72.2
                           [0308] => 96.3
                           [0320] => 68.4
                     )
            )
        [01468] => Array
           (
                ["Math"] => Array
                     (
                           [0130] => 23.2
                           [0215] => 54.8
                     )
                ["Science"] => Array
                     (
                           [0130] => 72.6
                           [0215] => 79.1
                           [0308] => 68.7
                           [0320] => 72.2
                     )
            )
    )

[17522] => Array
    (
        ect...
  

Ответ №1:

Вероятно, было бы проще запросить базу данных с нужными вам данными, когда вам это нужно. Если вы выполняете такие действия, как циклический просмотр данных, получение информации в массив из базы данных кажется совершенно правильным решением.

Ответ №2:

На самом деле это 6 из одного, полдюжины из другого. Главный вопрос, который нужно задать, не обязательно заключается в том, каким методом перемещать данные, скорее, каков желаемый результат?

Когда я имею дело с большими объемами данных, которые я возвращаю пользователю, я почти всегда обращаюсь к таблицам данных jQuery, Которые позволяют мне сортировать, размещать страницы, фильтровать и т.д. Гораздо более приятным способом, чем я мог бы сделать за разумный промежуток времени. Мои данные передаются через JSON с помощью вызова ajax, который позволяет мне не только получать данные по группе за раз, но и «конвейерные» данные, чтобы я мог загружать данные до и после моего результата, чтобы уменьшить количество обращений к базе данных.

Однако бывают случаи, когда сетка не является конечным решением. Возможно, вы пытаетесь отобразить это в более настраиваемом макете или просто собрать данные, которые будут использоваться другими элементами страницы. Это, безусловно, было бы допустимым использованием для массивов или XML, и я думаю, что я бы предпочел просто использовать массивы просто потому, что я больше привык к it….it это индивидуальное решение.

Иногда ответ заключается в том, чтобы сделать ваш запрос более конкретным. Однако это также может серьезно повлиять на производительность. Опять же, поскольку мы не знаем специфики, вам решать, каковы преимущества одновременного получения всего по сравнению с «затратами» на выполнение нескольких небольших транзакций.

Ответ №3:

Файл JSON был бы несколько короче, и у него было бы дополнительное преимущество, заключающееся в том, что его можно было бы легко анализировать с помощью языков, отличных от PHP. XML был бы более объемным (если беспокоит время загрузки, чего, вероятно, не будет через интрасеть) и имел бы большие затраты на обработку, но опять же, его можно легко проанализировать на языках, отличных от PHP. Предоставление файла данных в формате, понятном более чем одному языку программирования, всегда является хорошей идеей, потому что, хотя ваш текущий формат очень легко анализируется PHP с наименьшими потерями при синтаксическом анализе, PHP — единственный язык, который может его понять. Наличие его в переносимом формате, таком как JSON или XML, обеспечивает определенную степень проверки в будущем, если в будущем потребуется другая система, которая работает с теми же данными, но реализована на другом языке.