Perl 哈希数组
我们已经在前面的部分中了解了标量和数组。
标量究竟做了什么?它只存储整数和字符串。
数组到底是做什么的?它是一组标量,你可以使用索引访问数组的每个元素。但是,当你有成百上千的记录时,使用数组是个好的选择吗?我们会忘记哪个索引对应的哪个数值。为了克服这种情况,我们有像 perl hash
这样的东西。
什么是哈希数组?
哈希数组可以容纳数组也可以容纳的标量。唯一的区别是我们没有任何索引,而是我们有键和值。声明哈希数组,以 %
开头,后跟哈希数组的名称。让我们看一个例子,我们如何定义 Perl 哈希数组以及如何将它与数组区分开来
考虑三个人的例子,他们的年龄以数组表示。
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
输出:
Sainath33Krishna24Shruthi25
这样就很难了解每个人的年龄,因为我们需要记住所有人的姓名和年龄的索引位置。如果你有 3 个名字,但是当你有 1000 个或更多时呢?不再那么简单了。
我们可以使用哈希数组来克服这个问题。
哈希数组示例:
print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.
输出:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi2
我们现在声明了一个哈希数组,但是我们如何访问或打印它?应使用其关联键访问哈希数组中的每个元素,并为其分配值。因此,哈希数组中的每个键和值之间存在一对一的映射。
为了打印任何人的年龄,你只需要记住该人的姓名。
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
你可能想知道为什么我使用 $hash {KeyName}
,记住哈希数组是一个标量集合。因此,我们可以使用表示标量的$来访问每个哈希数组元素。
注意:哈希数组中的每个 Key 都应该是唯一的,否则它将覆盖你之前分配的值。
我们也可以打印整个哈希数组。
%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash;
print %newHash;
输出:
Tom23
添加 Perl 哈希数组
如你所见,我们已经有一个哈希数组 %newHash
,现在我们需要添加更多的条目。
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
输出:
Jim25John26Harry27
Perl 删除键
你可能希望从哈希数组中删除条目。这就是我们如何做到这一点。
delete $newHash{'Jim'};#This will delete an entry from the hash.
delete
是 Perl 的内置函数。
在这里,我们将看到一个为数组分配哈希数组的示例。
@array=%newHash;
print "@array";
注意:每当你打印哈希数组或将哈希数组存储到数组中时,顺序可能是不同的。
我们只能将哈希数组的键或值分配给数组。
@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n"; # \n to print new line.
要删除哈希数组中的所有条目,我们可以直接将哈希数组值分配给 null。
%newHash =();
这将重新定义它为没有条目的哈希数组。