Заполненный объект с многомерным меню
-
10-10-2019 - |
Вопрос
Мне интересно, есть ли эффективный способ поместить меню в массив или любой другой тип данных. С PHP я бы сделал что -то вроде этого:
$menu[1] = "home";
$menu[2] = "news";
$menu[3]["item"] = "products";
$menu[3]["subMenu"][1] = "jackets";
$menu[3]["subMenu"][2] = "T-shirts";
$menu[4] = "contact";
Однако я понятия не имею, как это сделать в Coldfusion. Я хочу взять эти данные из БД и подтолкнуть их в объект, это позволит мне генерировать HTML из массива.
Решение
На самом деле это очень похоже. Это предполагает ColdFusion 8 (или выше) для массива ([]
) и struct ({}
) литералы:
<cfset menu = [] /> <!--- Create initial array --->
<cfset menu[1] = "home" />
<cfset menu[2] = "news" />
<cfset menu[3] = {} /> <!--- Create structure --->
<cfset menu[3]["item"] = "products" /> <!--- Address structure by key --->
<cfset menu[3]["subMenu"] = [] />
<cfset menu[3]["subMenu"][1] = "jackets" />
<cfset menu[3]["subMenu"][2] = "T-shirts" />
<cfset menu[4] = "contact" />
<cfdump var="#menu#" /> <!--- Output --->
Надеюсь, это поможет!
Другие советы
Чтобы сделать ответ Ciaran на шаг дальше, вы можете сделать это полностью с объектными литералами в CF 9:
<cfset menu = ["home",
"news",
{"item"="products",
"subMenu"= ["jackets",
"T-shirts"]},
"contact"]>
<cfdump var="#menu#" /> <!--- Output --->
Не связан с StackOverflow