嘿伙计们我在yml中有数组
menu:
primary:
name: General menu
-
text: Home
addr: index.html
-
text: Contact
addr: contact.html
我有菜单(我创建了变量菜单,因为当我只使用print ...元素[' text'] ...我从php得到类似var_dump的文字"开始")我想删除' name'在foreach之前的元素,但它没有工作:
name = $data['name'][name]['name'] # i need this variable later
$data['menu'][name].delete('name') # it doesnt work
menu = "<ul>"
$data['menu'][name].each do |element|
menu << "<li><a href=\"#{element['addr']}\">#{element['text']}</a></li>"
end
menu << "</ul>"
print menu
我的错误是
在解析块映射时找不到预期的键...
所以函数删除在这里不起作用,我的问题是,如何删除&#34; name&#34;这个数组中的元素?为什么呢
print "<li><a href=\"#{element['addr']}\">#{element['text']}</a></li>"
不起作用?
感谢您的帮助: - )
答案 0 :(得分:0)
您的YAML无效,因为该阵列必须与密钥相关联。你可能想要使用类似的东西:
menu:
primary:
name: General menu
items:
-
text: Home
addr: index.html
-
text: Contact
addr: contact.html
另外,请摆脱使用$前缀变量的PHP实践。在ruby中,这使变量成为全局变量,应尽可能避免变量。
以下说明了您的预期操作:
data = YAML.load <<YAML
menu:
primary:
name: General menu
items:
-
text: Home
addr: index.html
-
text: Contact
addr: contact.html
YAML
=> data
{"menu"=>{"primary"=>{"name"=>"General menu", "items"=>[{"text"=>"Home", "addr"=>"index.html"}, {"text"=>"Contact", "addr"=>"contact.html"}]}}}
=> data['menu']['primary'].delete('name')
"General menu"
=> data
{"menu"=>{"primary"=>{"items"=>[{"text"=>"Home", "addr"=>"index.html"}, {"text"=>"Contact", "addr"=>"contact.html"}]}}}
您的HTML构建器也应按以下方式工作:
menu = "<ul>"
data['menu']['primary']['items'].each do |element|
menu << "<li><a href=\"#{element['addr']}\">#{element['text']}</a></li>"
end
menu << "</ul>"