belyys
13.03.2013 - 17:31
Доброго времени суток, не получается прокрутить одну феньку (
есть асоцц массив он формируется автоматически, может быть других размеров, вот пример:
array(
0 => array(40,41,44)
1 => array(47,48)
2 => array(51,56)
);
Вот что нужно получить (исходя из этого примера):
40,47,51
40,47,56
40,48,51
40,48,56
41,47,51
41,47,56
41,48,51
41,48,56
44,47,51
44,47,56
44,48,51
44,48,56
Запарка, помогите !!!
walerus
13.03.2013 - 18:38
belyys Свои мысли предоставь... и я не вижу ассоциативного массива в примере...
Valick
13.03.2013 - 18:49
Цитата |
Вот что нужно получить (исходя из этого примера): |
надо распечатать или сохранить в таом виде куда-то?
_____________
Стимулятор ~yoomoney - 41001303250491
belyys
13.03.2013 - 20:54
array(array(40,41,44), array(47,48), array(51,56));
Проблема в том как перебрать это что бы получилось вот это:
array(
array(40,47,51),
array(40,47,56),
array(40,48,51),
array(40,48,56),
array(41,47,51),
array(41,47,56),
array(41,48,51),
array(41,48,56),
array(44,47,51),
array(44,47,56),
array(44,48,51),
array(44,48,56)
);
Valick
13.03.2013 - 21:03
едрён батон.... очередная "уличная магия"
____
опишите закономерность, для получения одного массива из другого
а еще лучше расскажите что это за массив и вообще что вы хотите сделать в целом
_____________
Стимулятор ~yoomoney - 41001303250491
belyys
13.03.2013 - 21:13
Хочу перебрать это:
array(array(40,41,44), array(47,48), array(51,56));
так что бы получились все возможные варианты, если три массива то исходный будет тоже из 3-х значений, перебрать не проблемма, просто я не знаю сколько будет подмасивов, а так бы воспользоватся темже for или foreach, но беда.
Valick
13.03.2013 - 21:19
еще раз...
что это за массив, какую сущность имеют его значения, каким образом он формируется?
что у вас за приложение в целом?
какую цель вы преследуете получением нужного вам массива?
_____________
Стимулятор ~yoomoney - 41001303250491
belyys
13.03.2013 - 21:36
делаю точный фильтр для магазина, этот массив array(array(40,41,44), array(47,48), array(51,56)); мои данные для поиска, есть фильтр и его значения, эти три массива в массиве это фильтры, значения этих фильтров это значение элементов этих массивов.
Сколько фильтров в данном случае их 3 это критерия поиска для товара, из этих фильтров а точнее их значений я хочу сформировать все варианты выборки которые буду сравнивать с значениями фильтра товара.
из этих фильтров: array(array(40,41,44), array(47,48), array(51,56)); я хочу получить все варианты подбора, то есть в данном случае должен получить вот это:
array(
array(40,47,51),
array(40,47,56),
array(40,48,51),
array(40,48,56),
array(41,47,51),
array(41,47,56),
array(41,48,51),
array(41,48,56),
array(44,47,51),
array(44,47,56),
array(44,48,51),
array(44,48,56)
);
и потом я просто прокручу товар и если у мена в товаре совпадет его значения фильтров с хотя бы одним из этих, то этот товар точно подходит.
Решил так потомучто просто SQL запросом дело не решить если в одном фильтре выбраны пару значений, SQL отпадает.
Valick
13.03.2013 - 21:44
Цитата |
делаю точный фильтр для магазина, этот массив array(array(40,41,44), array(47,48), array(51,56)); мои данные для поиска, есть фильтр и его значения, эти три массива в массиве это фильтры, значения этих фильтров это значение элементов этих массивов.
Сколько фильтров в данном случае их 3 это критерия поиска для товара, из этих фильтров а точнее их значений я хочу сформировать все варианты выборки которые буду сравнивать с значениями фильтра товара.
из этих фильтров: array(array(40,41,44), array(47,48), array(51,56)); я хочу получить все варианты подбора, то есть в данном случае должен получить вот это: |
это выше моего понимания
вряд ли я смогу вам помочь
Цитата |
Решил так потомучто просто SQL запросом дело не решить |
belyys
14.03.2013 - 00:01
Решение если комуто нужно к примеру из array(array(40,41,44), array(47,48), array(51,56)) сделать (перебрать все комбинации):
array(
array(40,47,51),
array(40,47,56),
array(40,48,51),
array(40,48,56),
array(41,47,51),
array(41,47,56),
array(41,48,51),
array(41,48,56),
array(44,47,51),
array(44,47,56),
array(44,48,51),
array(44,48,56)
);
РЕШЕНИЕ:
$filtrMass =array(array(40,41,44), array(47,48), array(51,56));
function fill (&$arr, $idx = 0) {
static $line = array();
static $keys;
static $max;
static $results;
if ($idx == 0) {
$keys = array_keys($arr);
$max = count($arr);
$results = array();
}
if ($idx < $max) {
$values = $arr[$keys[$idx]];
foreach ($values as $value) {
array_push($line, $value);
fill($arr, $idx+1);
array_pop($line);
}
} else {
$results[] = $line;
}
if ($idx == 0) return $results;
}
echo "<pre>";
print_r(fill($filtrMass));
echo "</pre>";
Valick
Юморной "это выше моего понимания
вряд ли я смогу вам помочь"
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.