Задать вопрос
@centropull

Чем дополнить элементарную функцию, чтоб вышло как на картинке (см. под кат)?

Задача казалось бы элементарная, но...
Подозреваю, что должна быть рекурсия. Которую я, пока, не могу осилить.
Пожалуйста, помогите дописать функцию.
5b6d9959f2748305562186.jpegФУНКЦИЯ
function cats($db) {
	$arr = []; 
	$query = "
		SELECT `table`.`title`,
			`table`.`alias`,
			`table`.`parent`,
			`table`.`url`
		FROM `table`
	;";
	foreach ($db->query($query) as $key => $value) {
		$arr[$value['alias']]['title']	= $value['title'];
		$arr[$value['alias']]['alias']	= $value['alias'];
		$arr[$value['alias']]['parent']	= $value['parent'];
	}
	return $arr;
}


СТРУКТУРА ТАБЛИЦЫ
CREATE TABLE `table` (
  `title` varchar(250) DEFAULT NULL,
  `alias` varchar(250) DEFAULT NULL,
  `parent` varchar(250) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

INSERT INTO `table` (`title`, `alias`, `parent`) VALUES
('Фрукты и ягоды', 'fruits-and-berries', NULL),
('Овощи', 'vegetables', NULL),
('Арбуз', 'watermelon', 'fruits-and-berries'),
('Косточки от арбуза', 'watermelon-bones', 'watermelon'),
('Ядро косточки', 'core', 'watermelon-bones'),
('Манго', 'mango', 'fruits-and-berries'),
('Ананас', 'pineapple', 'fruits-and-berries'),
('Апельсин assy', 'orange', 'fruits-and-berries'),
('Лист от апельсина', 'orange-leaf', 'orange'),
('Сам апельсин', 'orange-itself', 'orange'),
('Мякоть', 'orange-flesh', 'orange-itself'),
('Кожура', 'peel', 'orange-itself'),
('Помидоры', 'tomatoes', 'vegetables'),
('Брокколи', 'broccoli', 'vegetables');
COMMIT;

5b6d97f33f5f1542791148.jpegСпасибо!
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Например, так:
function makeUrl(&$arr, $name) {
  if (!isset($arr[$name]['url'])) {
    if ('' == $arr[$name]['parent']) {
      $arr[$name]['url'] = $arr[$name]['alias'];
    } else {
      $arr[$name]['url'] = makeUrl($arr, $arr[$name]['parent']) . '/' .  $arr[$name]['alias'];
    }
  }
  return $arr[$name]['url'];
}

foreach (array_keys($arr) as $name) {
  makeUrl($arr, $name);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
задания выполняют на других ресурсах
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽