Помощь с массивами

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Добрый день.

Помогите решить такую задачу.
Есть два Массива:
PHP:
$select = Array("YAR", "BEST_SELLER", "COMING_SOON", "NEW");
$filter = Array(
    "BEST_SELLER" => Array("1"),
    "NEW" => "1",
);
В результате их обработки должно получиться следующее:
PHP:
$result = Array(
    "0" => Array(
        "select" => Array("YAR", "COMING_SOON"),
        "filter" => Array(
            "BEST_SELLER" => Array("1"),
            "NEW" => "1",
        ),
    ),
    "1" => Array(
        "select" => Array("BEST_SELLER"),
        "filter" => Array("NEW" => "1"),
    ),
    "2" => Array(
        "select" => Array("NEW"),
        "filter" => Array("BEST_SELLER" => Array("1")),
    ),
);

Соответственно если в $filter добавиться еще условие, то должно получиться так:
PHP:
$filter = Array(
    "BEST_SELLER" => Array("1"),
    "NEW" => "1",
    "YAR" => "2012",
);
 
$result = Array(
    "0" => Array(
        "select" => Array("YAR"),
        "filter" => Array(
            "BEST_SELLER" => Array("1"),
            "NEW" => "1",
        ),
    ),
    "1" => Array(
        "select" => Array("BEST_SELLER"),
        "filter" => Array("NEW" => "1", "YAR" => "2012"),
    ),
    "2" => Array(
        "select" => Array("COMING_SOON"),
        "filter" => Array("NEW" => "1", "BEST_SELLER" => Array("1"), "YAR" => "2012"),
    ),
    "3" => Array(
        "select" => Array("NEW"),
        "filter" => Array("BEST_SELLER" => Array("1"), "YAR" => "2012"),
    ),
);

Постоянно захожу в тупик, кол-во вложенных foreach с проверками стремиться к бесконечности.
 
не могу понять вашу логику :confused:
перебираются только значения, входящие в $filter? или все, указанные в $select?
вот код:
PHP:
$select = Array("YAR", "BEST_SELLER", "COMING_SOON", "NEW");
$filter = Array(
"BEST_SELLER" => Array("1"),
"NEW" => "1",
"YAR"=>"2012",
);
$i=0;
foreach($filter as $key => $value){
$r=array($key=>$value);
$result[$i]["select"]=$key;
$result[$i]["filter"]=array_diff_key($filter,$r);
++$i;
}
print_r($result);
Попробуйте и скажите что не так. Лучше бы было не только пример предоставить, но и словесно описать то, что нужно получить на выходе из этих 2-х массивов
 
не могу понять вашу логику :confused:
перебираются только значения, входящие в $filter? или все, указанные в $select?

Смысл сводиться к построению параметров для запросов к бд, для фильтрации (попытка сделать аналог фильтра:
 
а первая часть еще проще:
PHP:
$result[0]["select"]=array_diff($select,array_keys($filter));
$result[0]["filter"]=$filter;
$i=1;
правда, индексы остаются от первоначального массива, например:
Код:
[select] => Array
(
[2] => COMING_SOON
)
 
Назад
Сверху