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 =(); 这将重新定义它为没有条目的哈希数组。