给定以下匿名哈希数组:
$AoH = [
{
'FORM_FIELD_ID' => '10353',
'VISIBLE_BY' => '10354',
'FIELD_LABEL' => 'ISINCIDENT',
'VALUE' => '',
'DEFAULT_FIELD_LABEL' => 'Yes No',
'FORM_ID' => '2113',
},
{
'FORM_FIELD_ID' => '10354',
'VISIBLE_BY' => '0',
'FIELD_LABEL' => 'CATEGORY',
'VALUE' => 'zOS Logical Security (RACF)',
'DEFAULT_FIELD_LABEL' => 'CATEGORY',
'FORM_ID' => '2113',
},
{
'FORM_FIELD_ID' => '10368',
'VISIBLE_BY' => '10354',
'FIELD_LABEL' => 'STARTDATE',
'VALUE' => '',
'DEFAULT_FIELD_LABEL' => 'REQTYPE',
'FORM_ID' => '2113',
}
];
如果我知道 FORM_FIELD_ID
是 10353,我如何直接访问 FIELD_LABEL
值?
我知道我可以循环遍历@$AoH
并根据$_->{FORM_FIELD_ID} ==有条件地查找
,但是如果同一哈希中的其他值之一已知,是否可以直接访问所需的值?$_->{FIELD_LABEL}
10353
最佳答案
不,除非您更改数据结构。你可以例如按表单字段 ID 对记录进行索引:
my %by_form_field_id = map { $_->{FORM_FIELD_ID} => $_ } @$AoH;
然后:
my $field_label = $by_form_field_id{10353}{FIELD_LABEL};
在不更改数据结构的情况下,您确实必须grep
:
my $field_label = (grep { $_->{FORM_FIELD_ID} == 10353 } @$AoH)[0]->{FIELD_LABEL};
关于arrays - 根据匿名哈希数组中的另一个值直接访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533832/