我有一个select查询(查询返回4条记录,每条记录7行),返回如下输出:
{HD 208 {} 2012-04-13 25 21 4} {SD 208 {} 2012-04-13 100 97 3} {HD 2072 {} 2012-04-13 5 4 1} {SD 2072 {} 2012-04-13 50 45 6}
现在我想设置将它们存储在变量中并逐个显示,以便我可以使用html表显示它 记录以$ get_record返回。 所以这就是我正在做的事情
foreach record $get_record {
foreach item [lindex $record 0] {
set event_name [ lindex $item 0]
puts $event_name
set event_date [ lindex $item 1]
put $event_date
set attempts_cnt [ lindex $item 2]
put $attempts_cnt
set success_cnt [ lindex $item 3]
put $success_cnt
}
}
不幸的是,这不起作用..
答案 0 :(得分:2)
如果您使用的是Tcl 8.5或更高版本
foreach record $get_record {
lassign $record event_name event_date attemts_cnt success_cnt
puts $event_name
puts $event_date
puts $attempts_cnt
puts $success_cnt
}
如果您有Tcl 8.4或更早版本
foreach record $get_record {
foreach {event_name event_date attemts_cnt success_cnt} $record {break}
puts $event_name
puts $event_date
puts $attempts_cnt
puts $success_cnt
}
答案 1 :(得分:2)
扩展格伦的回答:
问题在于你以错误的方式进行迭代:
现在可能很清楚错误。
因此Glenn提供的修复很简单:
lassign
或foreach
+ break
的技巧),但您也可以保留lindex
+ set
方法(但它更冗长,更不优雅)。