Альтернативный многомерный ассоциативный массив PHP - PullRequest
1 голос
/ 03 мая 2011

В настоящее время у меня есть класс отчетности, который извлекает большую серию данных из моей базы данных и форматирует их в 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...

Ответы [ 3 ]

0 голосов
/ 03 мая 2011

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

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

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

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

0 голосов
/ 03 мая 2011

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

0 голосов
/ 03 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...