$link_add = array(
389=>array(
1649=>array(
"link"=>"1-komnatnye",
"name"=>"1-комнатные",
"n_prop"=>"43",
"priority"=>"1",
),
1650=>array(
"link"=>"2-komnatnye",
"name"=>"2-комнатные",
"n_prop"=>"43",
"priority"=>"1",
),
1647=>array(
"link"=>"vtorichka",
"name"=>"Вторичка",
"n_prop"=>"42",
"priority"=>"2",
),
)
);
Здравствуйте. Мне нужно сгруппировать значения массива в зависимости от приоритета . Например, в данном случае я должен получить 4 ссылки, которые собираются в след. массив:
array(
"/1-komnatnye/",
"/2-komnatnye/",
"/1-komnatnye/vtorichka/",
"/2-komnatnye/vtorichka/",
)
Возможно можно изначально исходны массив как-то переделать, чтобы потом группировать было удобнее? Спасибо за идеи !
Из вашего описания не ясно каков вообще алгоритм построения этих ссылок. Возможно все комбинации составить следует.
Допустим ваши исходные данные таковы:
$links = [
[ "priority" => 1, "link" => "1-komnatnye" ],
[ "priority" => 1, "link" => "2-komnatnye" ],
[ "priority" => 2, "link" => "vtorichka" ],
[ 'priority' => 2, 'link' => "qwe" ],
[ 'priority' => 3, 'link' => 'zxc' ]
];
рекурсивное решение для генерации может быть таким:
function doSomething($data, &$result, $level = 1){
static $path = [];
$ldata = array_filter($data, function($e) use ($level){ return $e['priority'] == $level;});
foreach($ldata as $ld){
$path[] = $ld['link'];
$result[] = implode('/', $path);
doSomething($data, $result, $level + 1);
array_pop($path);
}
}
$result = [];
doSomething($links, $result);
print_r($result);
Фильтруем каждый раз только элементы нужного уровня. Циклом по ним запускаем рекурсию, при этом храня текущий путь в статической переменной. Перед вызовом рекурсии формируем ссылку по текущему пути.
на выходе:
Array (
[0] => 1-komnatnye
[1] => 1-komnatnye/vtorichka
[2] => 1-komnatnye/vtorichka/zxc
[3] => 1-komnatnye/qwe
[4] => 1-komnatnye/qwe/zxc
[5] => 2-komnatnye
[6] => 2-komnatnye/vtorichka
[7] => 2-komnatnye/vtorichka/zxc
[8] => 2-komnatnye/qwe
[9] => 2-komnatnye/qwe/zxc
)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть таблица, которая хранит 140 примерно значений:
Спарсил информацию