|
|
|
| Прошу помочь!
Есть массив с элементами:
array { 1,2,3,4,5,
6,7,8,9,0 }
и есть наборы элементов
A = {1, 3, 5}
B = {5, 6}
C = {5, 8}
Нужно отобрать неповторяющиеся элементы, содержащиеся в этих наборах,
т.е. должно получиться:
$result = {1, 3, 5, 6, 8}.
Как это сделать?
Спасибо! | |
|
|
|
|
|
|
|
для: Evgen
(21.04.2006 в 22:03)
| | Какое отношение имеет первый массив ко всему этому?
Как это завязано с базой данных? | |
|
|
|
|
|
|
|
для: Evgen
(21.04.2006 в 22:03)
| | Наборы - это SET или что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(22.04.2006 в 00:59)
| | Извиняюсь за коряво заданный вопрос!
Попробую так:
в базе есть таблица с параметрами товаров. Параметры не уникальны для каждого товара, поэтому вынесены в отдельную таблицу.
В другой таблице находятся товары.
В третьей таблице - наборы этих товаров.
Мне надо получить перечень всех неповторяющихся параметров товаров, присутствующих в наборе.
(Запрос к БД: набор (известен) - товары - параметры. Результат : последовательный список всех параметров товаров, входящих в набор. Один и тот же параметр - несколько раз).
Не очень запутано? | |
|
|
|
|
|
|
|
для: Evgen
(22.04.2006 в 04:37)
| | Опять же ускальзает понятие набора - это что за набор, откуда он берётся - это корзина или что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(22.04.2006 в 11:22)
| | Опять извиняюсь!
Нет, это не корзина. Это набор - как составной товар, т.е. он тоже может выбираться покупателем, после чего его состав вытаскивается из базы.
Например, набор (или как правильнее его обозвать?) - передаточный механизм №1. Состоит из шестеренки №1, шестеренки №2, подшипника №1, подшипника №3. Является самостоятельным товаром, находится в базе в таблице с такими механизмами.
Эти самые шестеренки и подшипники тоже могут являться товаром, доступным для выбора.
Они же могут являться составной частью механизма № 2 и т.д. | |
|
|
|
|
|
|
|
для: Evgen
(22.04.2006 в 14:51)
| | Если возможность поместить id всех товарных позиций в массив, пускай даже они будут идти в разнобой и не попорядку? | |
|
|
|
|
|
|
|
для: cheops
(22.04.2006 в 15:58)
| | Уточню - Ваш вопрос начинается - "есть ли..." ? Если да (и я правильно понял Ваш вопрос - id механизмов, шестеренок и проч. - в одну таблицу), то ответ такой - конечно возможно. В каком порядке - тоже не принципиально.
Только пока не понятно, что это даст. | |
|
|
|
|
|
|
|
для: Evgen
(22.04.2006 в 17:40)
| | Имеется ввиду не в таблицу, а в PHP-массив - тогда бы мы могли получить уникальные значения (хотя в таблице тоже можно) и по ним сформировать запрос. | |
|
|
|
|
|
|
|
для: cheops
(22.04.2006 в 22:00)
| | Так ведь id товара (шестеренок и т.п.) и id их параметров вытаскиваются из БД запросом. В форме мы выбираем id комплекта (механизм), остальное получаем на выходе.
Т.е. получается, что прежде чем эти id затолкнуть в массив, нужно сначала эти id получить из базы.
Тогда потребуется второй запрос, который будет содержать неповторяющиеся id !
В принципе, это возможно. База не объемная.
А как из массива вытащить неповторяющиеся элементы? (или этот вопрос нужно разместить на форуме ПХП ?) | |
|
|
|
|
|
|
|
для: Evgen
(22.04.2006 в 22:24)
| | Для этого применяется функция array_unique() - ей скармливается массив - а на выходе массив с уникальными значениями. | |
|
|
|
|
|
|
|
для: cheops
(22.04.2006 в 22:29)
| | Огромное спасибо!
P.S. А два обращения к базе - это нормально, ничего тут криминального (или двойки по программированию...)? | |
|
|
|
|
|
|
|
для: Evgen
(22.04.2006 в 22:34)
| | Нет в этом ничего криминального нет, более того, такие схемы часто работают быстрее чем многотабличные запросы. Вы когда пишите программу на PHP не пытаетесь же всю логику программы поместить в один оператор :))) | |
|
|
|
|
|
|
|
для: cheops
(23.04.2006 в 11:04)
| | Разумно!
Спасибо за помощь! | |
|
|
|