#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, обеспечивает определенную степень проверки в будущем, если в будущем потребуется другая система, которая работает с теми же данными, но реализована на другом языке.