如何循环遍历哈希?

发布于 2024-10-30 09:01:34 字数 205 浏览 3 评论 0 原文

给定以下变量:

$test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
}

如何在不知道我有哪些键的情况下循环遍历所有分配?

我想填充一个选择框,其中结果作为标签,键作为隐藏值。

Given the following variable:

$test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
}

How can loop through all assignments without knowing which keys I have?

I would like to fill a select box with the results as label and the keys as hidden values.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

赠意 2024-11-06 09:01:34

只需在键上执行 foreach 循环:

#!/usr/bin/perl
use strict;
use warnings;

my $test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
};

foreach my $key(keys %$test) {
    print "key=$key : value=$test->{$key}\n";
}

输出:

key=4 : value=G
key=1 : value=A
key=3 : value=C
key=2 : value=B
key=5 : value=K

Just do a foreach loop on the keys:

#!/usr/bin/perl
use strict;
use warnings;

my $test = {
  '1' => 'A',
  '2' => 'B',
  '3' => 'C',
  '4' => 'G',
  '5' => 'K',
};

foreach my $key(keys %$test) {
    print "key=$key : value=$test->{$key}\n";
}

output:

key=4 : value=G
key=1 : value=A
key=3 : value=C
key=2 : value=B
key=5 : value=K
才能让你更想念 2024-11-06 09:01:34

您可以使用内置函数each

while (my ($key, $value) = each %$test) {
  print "key: $key, value: $value\n";
}

You can use the built-in function each:

while (my ($key, $value) = each %$test) {
  print "key: $key, value: $value\n";
}
深海不蓝 2024-11-06 09:01:34

您可以使用 keys 找出您拥有的键

my @keys = keys %$test; # Note that you need to dereference the hash here

,或者您可以一次完成整个操作:

print map { "<option value='$_'>$test->{$_}</option>"  } keys %$test;

但您可能需要某种顺序:

print map { "<option value='$_'>$test->{$_}</option>"  } sort keys %$test;

...而且您几乎肯定会更好将 HTML 生成移至单独的模板系统

You can find out what keys you have with keys

my @keys = keys %$test; # Note that you need to dereference the hash here

Or you could just do the whole thing in one pass:

print map { "<option value='$_'>$test->{$_}</option>"  } keys %$test;

But you'd probably want some kind of order:

print map { "<option value='$_'>$test->{$_}</option>"  } sort keys %$test;

… and you'd almost certainly be better off moving the HTML generation out to a separate template system.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文