使用foreach时在哈希哈希中访问哈希参数的语法(syntax for accessing hash param in hash of hashes when using foreach)

编程入门 行业动态 更新时间:2024-10-27 12:38:58
使用foreach时在哈希哈希中访问哈希参数的语法(syntax for accessing hash param in hash of hashes when using foreach)

我有哈希的哈希,我正在尝试用每个哈希值填充一个选择框。 无论如何,我无法访问我的内部哈希变量。 我能够在我的选择中生成正确数量的选项,但我目前只能设置每个选择选项的值参数。

继承人我的哈希:

my $export_types = { a => {label => "Foo", ext => ".js"}, b => {label => "Bar", ext => ".gz"}};

这是迄今为止我为我的foreach尝试过的事情:

my $select = "<select id='fancy'>"; foreach my $key (sort keys %{$export_types}) { $select .= "<option value='$key' "; if($saved_value eq $key || (!$saved_value && $key eq "a")) { $select .="selected='selected'"; } $select .= ">".$export_types{$key}{label}."</option>"; } $select .= "</select>";

显然我正在访问标签属性错误。 对于那条特定的线路,我也尝试过:

$select .= ">".$export_types{$key}->{label}."</option>";

但那也无济于事。 我确定我错过了一些简单的事情。

谢谢您的帮助 :)

I've got this hash of hashes and I'm trying to populate a select box with values from each hash. Anyway I'm having trouble getting to my inner hash variables. I am able to generate the right number of options in my select, but I'm currently only able to set the value parameter of each select option.

Heres my hash:

my $export_types = { a => {label => "Foo", ext => ".js"}, b => {label => "Bar", ext => ".gz"}};

Heres what I've tried so far for my foreach:

my $select = "<select id='fancy'>"; foreach my $key (sort keys %{$export_types}) { $select .= "<option value='$key' "; if($saved_value eq $key || (!$saved_value && $key eq "a")) { $select .="selected='selected'"; } $select .= ">".$export_types{$key}{label}."</option>"; } $select .= "</select>";

apparently I'm accessing the label property wrong. For that particular line I also tried:

$select .= ">".$export_types{$key}->{label}."</option>";

but that was to no avail as well. I'm sure I'm missing something simple.

Thanks for the help :)

最满意答案

表达方式

$export_types{$key}{label}

假设存在散列%export_types 。 不是这种情况。 如果你有一个use strict的use strict范围,你会被提醒这个事实。

因为$export_types是一个哈希引用 ,所以我们必须在使用下标运算符访问某个值之前取消引用它。 或

$export_types->{$key}{label}

要么

$$export_types{$key}{label}

(我更喜欢前者)。

The expression

$export_types{$key}{label}

assumes that there is a hash %export_types. This is not the case. If you had a use strict in scope, you would have been alerted to this fact.

Because $export_types is a hash reference, we have to dereference it before using the subscript operator to access some value. Either

$export_types->{$key}{label}

or

$$export_types{$key}{label}

(I prefer the former).

更多推荐

本文发布于:2023-08-07 20:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1465671.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语法   参数   foreach   哈希哈希中   syntax

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!