Сейчас передо мной стал такой вопрос:
Я получаю из MySQL две таблицы, которые в последствии я связываю по id номеру этих строк.
Запрашиваю именно в два запроса, поскольку данные в первом случае хранятся как одна строка, во втором случае как таблица...
После чего я делаю два массива, первый по строке, второй по таблице для сбора этих данных.
Наглядно - первый массив генерирует такой массив:
Array
(
[142] => Array(
[val] => 14
[maxval] => 0
)
[324] => Array(
[val] => 5
[maxval] => 0
)
[242] => Array(
[val] => 16
[maxval] => 0
)
)
Второй по id заполняет значение maxval.
И тут стал вопрос, а что если для значения maxval вернется две строки с одинаковым id... Одна строка теряется. Затираясь новыми значениями.
Решил попробовать id вынести из ключа массива, но как тогда обратиться к id массива, если по сути я знаю только порядок строк...
Array
(
[0] => Array(
[id] => 142
[val] => 14
[maxval] => 0
)
[1] => Array(
[id] => 324
[val] => 5
[maxval] => 0
)
[2] => Array(
[id] => 242
[val] => 16
[maxval] => 0
)
)
Можно создать второй массив, который будет содержать id как ключ и ключ первого массива в качестве аргумента для доступа к нему.
А как обработать далее? Что делать, когда вторая таблица вернет два одинаковых id?
Нужно как то сохранить две дополнительные строки...
Может я не правильно подошел к созданию массива и было бы проще как то по другому организовать?
Спустя 8 минут, 49 секунд (9.02.2012 - 15:47) Invis1ble написал(а):
Цитата |
И тут стал вопрос, а что если для значения maxval вернется две строки с одинаковым id... Одна строка теряется. Затираясь новыми значениями. |
maxval сделай массивом (если я конечно правильно понял задачу)
[142] => Array(
[val] => 14
[maxval] => array(0, ...)
)
Спустя 24 минуты, 9 секунд (9.02.2012 - 16:11) Quieteroks написал(а):
Цитата (Invis1ble @ 9.02.2012 - 12:47) | ||
maxval сделай массивом (если я конечно правильно понял задачу) [142] => Array( [val] => 14 [maxval] => array(0, ...) ) |
Я для примера только три поля показал. Там есть еще поля... И возможно будут расширяться.
Все повторно встречаемые поля сделать еще раз массивом?
А потом дополнительно проверять is_array при анализе полученного массива?
Спустя 5 минут, 32 секунды (9.02.2012 - 16:17) Invis1ble написал(а):
Цитата |
Все повторно встречаемые поля сделать еще раз массивом? |
ага, типа того
Цитата |
А потом дополнительно проверять is_array при анализе полученного массива? |
ну это уже зависит от задач.
Делай массивом независимо от кол-ва элементов, чтоб опустить необходимость проверки is_array()
Спустя 4 минуты, 51 секунда (9.02.2012 - 16:22) Quieteroks написал(а):
Цитата |
Делай массивом независимо от кол-ва элементов, чтоб опустить необходимость проверки is_array() |
В этом случае будут еще циклы внутри цикла, дабы проанализировать строки.
Что тогда быстрее получится? Проверка или цикл?
В общем советуете расширять массив подмассивами при подобных дилеммах?
Спустя 7 минут, 17 секунд (9.02.2012 - 16:29) Invis1ble написал(а):
Цитата |
В общем советуете расширять массив подмассивами при подобных дилеммах? |
А как по-другому? По-другому костыли получатся
Спустя 21 минута, 45 секунд (9.02.2012 - 16:51) Quieteroks написал(а):
Invis1ble
Хорошо, буду пробовать.
Спасибо за совет.
Хорошо, буду пробовать.
Спасибо за совет.