Bermula dengan ...login
Bermula dengan Perl
pengarang:php.cn  masa kemas kini:2022-04-14 16:05:12

Tatasusunan Perl


Tatasusunan ialah pembolehubah senarai tidak tertib yang menyimpan nilai skalar.

Pembolehubah tatasusunan bermula dengan @. Untuk mengakses elemen tatasusunan, gunakan format $ + nama ubah + [nilai indeks] untuk membaca contohnya:

#!/usr/bin/perl

@hits = (25, 30, 40);             
@names = ("google", "php", "taobao");

print "$hits[0] = $hits[0]\n";
print "$hits[1] = $hits[1]\n";
print "$hits[2] = $hits[2]\n";
print "$names[0] = $names[0]\n";
print "$names[1] = $names[1]\n";
print "$names[2] = $names[2]\n";

Dalam atur cara, simbol $ dilepaskan, membenarkan. ia menjadi output sebagaimana adanya.

Laksanakan atur cara di atas, hasil output ialah:

$hits[0] = 25
$hits[1] = 30
$hits[2] = 40
$names[0] = google
$names[1] = php
$names[2] = taobao

Cipta tatasusunan

Pembolehubah tatasusunan bermula dengan simbol @, dan elemen diletakkan dalam kurungan , anda juga boleh menentukan tatasusunan bermula dengan qw.

@array = (1, 2, 'Hello');
@array = qw/这是 一个 数组/;

Tatasusunan kedua menggunakan operator qw//, yang mengembalikan senarai rentetan dengan elemen tatasusunan yang dipisahkan oleh ruang. Sudah tentu, anda juga boleh menggunakan berbilang baris untuk mentakrifkan tatasusunan:

@days = qw/google
taobao
...
php/;

Anda juga boleh menetapkan nilai pada tatasusunan mengikut indeks, seperti berikut:

$array[0] = 'Monday';
...
$array[6] = 'Sunday';

Akses elemen tatasusunan

Untuk mengakses elemen tatasusunan, gunakan format $ + pembolehubah + [nilai indeks] untuk membaca contohnya:

@sites = qw/google taobao php/;

print "$sites[0]\n";
print "$sites[1]\n";
print "$sites[2]\n";
print "$sites[-1]\n";    # 负数,反向读取

Laksanakan atur cara di atas, dan hasil keluarannya ialah:

google
taobao
php
php

tatasusunan Nilai indeks bermula pada 0, iaitu 0 untuk elemen pertama, 1 untuk elemen kedua dan seterusnya.

Nombor negatif dibaca dari arah songsang, -1 ialah elemen pertama, -2 ialah elemen kedua


Nombor jujukan tatasusunan

Perl menyediakan borang Tatasusunan yang boleh menjadi output dalam urutan, formatnya ialah nilai mula + .. + nilai akhir , contohnya adalah seperti berikut:

#!/usr/bin/perl

@var_10 = (1..10);
@var_20 = (10..20);
@var_abc = (a..z);

print "@var_10\n";   # 输出 1 到 10
print "@var_20\n";   # 输出 10 到 20
print "@var_abc\n";  # 输出 a 到 z
<p>执行以上程序,输出结果为:</p>
<pre>
1 2 3 4 5 6 7 8 9 10
10 11 12 13 14 15 16 17 18 19 20
a b c d e f g h i j k l m n o p q r s t u v w x y z

saiz array

array saiz diberikan oleh Ditentukan oleh konteks skalar dalam tatasusunan. :

@array = (1,2,3);
print "数组大小: ",标量 @array,"\n";

Panjang tatasusunan mengembalikan saiz fizikal tatasusunan, bukan bilangan elemen Kita boleh lihat contoh berikut:

#!/uer/bin/perl

@array = (1,2,3);
$array[50] = 4;

$size = @array;
$max_index = $#array;

print "数组大小:  $size\n";
print "最大索引: $max_index\n";

Laksanakan atur cara di atas, hasil keluarannya ialah: <. 🎜>

数组大小:  51
最大索引: 50

Seperti yang dapat dilihat dari output, terdapat hanya empat elemen tatasusunan, tetapi saiz tatasusunan ialah 51.


Menambah dan Mengalih Keluar Elemen Tatasusunan

Perl menyediakan beberapa fungsi berguna untuk menambah dan mengalih keluar elemen tatasusunan.

Jika anda tidak mempunyai pengalaman pengaturcaraan sebelum ini, anda boleh bertanya apakah fungsi sebenarnya,

cetak yang kami gunakan sebelum ini adalah fungsi output.

Jadual berikut menyenaraikan fungsi operasi yang biasa digunakan dalam tatasusunan:

< th >Jenis dan perihalan
Nombor siri
1

tolak @ARRAY, LIST
序号类型和描述
1push @ARRAY, LIST

将列表的值放到数组的末尾

2pop @ARRAY

弹出数组最后一个值,并返回它

3shift @ARRAY

弹出数组第一个值,并返回它。数组的索引值也依次减一。

4unshift @ARRAY, LIST

将列表放在数组前面,并返回新数组的元素个数。

<🎜>Tolak nilai senarai ke penghujung daripada tatasusunan< 🎜>
2<🎜>pop @ARRAY<🎜><🎜>Memaparkan nilai terakhir tatasusunan dan mengembalikannya <🎜>
3<🎜>shift @ARRAY<🎜><🎜>Pop nilai pertama tatasusunan dan kembalikannya. Nilai indeks tatasusunan juga dikurangkan oleh satu. <🎜>
4<🎜>nyahshift @ARRAY, LIST<🎜><🎜>Letakkan senarai di hadapan tatasusunan dan kembalikan tatasusunan baru bilangan elemen. <🎜>

Instance

#!/usr/bin/perl

# 创建一个简单是数组
@sites = ("google","php","taobao");
print "1. \@sites  = @sites\n";

# 在数组结尾添加一个元素
push(@sites, "baidu");
print "2. \@sites  = @sites\n";

# 在数组开头添加一个元素
unshift(@sites, "weibo");
print "3. \@sites  = @sites\n";

# 删除数组末尾的元素
pop(@sites);
print "4. \@sites  = @sites\n";

# 移除数组开头的元素
shift(@sites);
print "5. \@sites  = @sites\n";

melaksanakan program di atas dan hasil output ialah:


Cut array

Kita boleh potong tatasusunan , dan mengembalikan tatasusunan baharu selepas memotong:

#!/usr/bin/perl

@sites = qw/google taobao php weibo qq facebook 网易/;

@sites2 = @sites[3,4,5];

print "@sites2\n";

Laksanakan atur cara di atas, hasil output ialah:

weibo qq facebook

Indeks tatasusunan perlu menentukan nilai indeks yang sah, yang boleh menjadi positif nombor diikuti dengan nombor negatif, setiap nilai indeks Asingkan dengan koma.

Jika ia ialah indeks berterusan, anda boleh menggunakan .. untuk mewakili julat yang ditentukan:

#!/usr/bin/perl

@sites = qw/google taobao php weibo qq facebook 网易/;

@sites2 = @sites[3..5];

print "@sites2\n";

Laksanakan atur cara di atas, hasil output ialah:

weibo qq facebook

Gantikan elemen tatasusunan

Fungsi splice() digunakan untuk menggantikan elemen tatasusunan dalam Perl Format sintaks adalah seperti berikut:

splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]

Penerangan parameter:

.
  • @ARRAY : Tatasusunan yang akan diganti.

  • OFFSET: kedudukan permulaan.

  • PANJANG: Bilangan elemen untuk diganti.

  • SENARAI: Senarai elemen gantian.

Contoh berikut menggantikan 5 elemen dalam tatasusunan bermula dari elemen ke-6:

#!/usr/bin/perl

@nums = (1..20);
print "替换前 - @nums\n";

splice(@nums, 5, 5, 21..25); 
print "替换后 - @nums\n";

Laksanakan atur cara di atas, hasil output ialah:

替换前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
替换后 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20

Tukar rentetan kepada tatasusunan

Untuk menukar rentetan kepada tatasusunan dalam Perl, gunakan fungsi split() Format sintaks adalah seperti berikut:

split [ PATTERN [ , EXPR [ , LIMIT ] ] ]

Perihalan parameter:

  • POLA: pembatas, lalai ialah ruang.

  • EXPR: Tentukan bilangan rentetan.

  • HAD: Jika parameter ini ditentukan, bilangan elemen tatasusunan dikembalikan.

Instance

#!/usr/bin/perl

# 定义字符串
$var_test = "php";
$var_string = "www-php-com";
$var_names = "google,taobao,php,weibo";

# 字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names  = split(',', $var_names);

print "$test[3]\n";  # 输出 com
print "$string[2]\n";  # 输出 com
print "$names[3]\n";   # 输出 weibo

melaksanakan atur cara di atas, dan hasil output ialah:

o
com
weibo

Tukar tatasusunan kepada rentetan

Dalam Perl, fungsi join() digunakan untuk menukar tatasusunan kepada rentetan Format sintaks adalah seperti berikut:

join EXPR, LIST

Perihalan parameter:

  • EXPR: penyambung.

  • SENARAI: Senarai atau tatasusunan.

Instance

#!/usr/bin/perl

# 定义字符串
$var_string = "www-php-com";
$var_names = "google,taobao,php,weibo";

# 字符串转为数组
@string = split('-', $var_string);
@names  = split(',', $var_names);


# 数组转为字符串
$string1 = join( '-', @string );
$string2 = join( ',', @names );

print "$string1\n";
print "$string2\n";

melaksanakan program di atas, hasil output ialah:

www-php-com
google,taobao,php,weibo

Isihan tatasusunan

Isih tatasusunan dalam Perl Gunakan fungsi sort(), format sintaks adalah seperti berikut:

sort [ SUBROUTINE ] LIST

Perihalan parameter:

  • SUBRUTIN: Tentukan peraturan.

  • HAD: senarai atau tatasusunan.

Instance

#!/usr/bin/perl

# 定义数组
@sites = qw(google taobao php facebook);
print "排序前: @sites\n";

# 对数组进行排序
@sites = sort(@sites);
print "排序前: @sites\n";

melaksanakan program di atas, dan hasil output ialah:

排序前: google taobao php facebook
排序前: facebook google php taobao

Nota: Isihan tatasusunan adalah berdasarkan angka ASCII nilai. Oleh itu, apabila kita mengisih tatasusunan, adalah lebih baik untuk menukar setiap elemen kepada huruf kecil sebelum mengisih.


Pembolehubah khas: $[

Pembolehubah khas $[ mewakili nilai indeks pertama tatasusunan, yang biasanya 0. Jika kita menukar $[ ditetapkan kepada 1, maka nilai indeks pertama tatasusunan ialah 1, yang kedua ialah 2, dan seterusnya. Contohnya adalah seperti berikut:

#!/usr/bin/perl

# 定义数组
@sites = qw(google taobao php facebook);
print "网站: @sites\n";

# 设置数组的第一个索引为 1
$[ = 1;

print "\@sites[1]: $sites[1]\n";
print "\@sites[2]: $sites[2]\n";

Jalankan program di atas, dan hasil output ialah:

网站: google taobao php facebook
@sites[1]: google
@sites[2]: taobao

Secara amnya, kami tidak mengesyorkan menggunakan pembolehubah khas $[ Dalam versi baharu Perl, Pembolehubah ini sudah lapuk.


Gabung tatasusunan

Elemen tatasusunan dipisahkan dengan koma Kita juga boleh menggunakan koma untuk menggabungkan tatasusunan, seperti yang ditunjukkan di bawah:

#!/usr/bin/perl

@numbers = (1,3,(4,5,6));

print "numbers = @numbers\n";

melaksanakan program di atas, dan hasil output ialah:

numbers = 1 3 4 5 6

Anda juga boleh membenamkan berbilang tatasusunan dalam tatasusunan dan menggabungkannya ke dalam tatasusunan utama:

#!/usr/bin/perl

@odd = (1,3,5);
@even = (2, 4, 6);

@numbers = (@odd, @even);

print "numbers = @numbers\n";

melaksanakan atur cara di atas , dan hasil keluarannya ialah:

numbers = 1 3 5 2 4 6

Pilih elemen daripada senarai

Senarai boleh digunakan sebagai tatasusunan, dan elemen yang ditentukan boleh dibaca dengan menyatakan nilai indeks selepas senarai, seperti berikut:

#!/usr/bin/perl

$var = (5,4,3,2,1)[4];

print "var 的值为 = $var\n"

Laksanakan atur cara di atas, hasil output ialah:

var 的值为 = 1

Begitu juga kita boleh menggunakan .. dalam tatasusunan untuk membaca elemen dalam julat yang ditentukan:

#!/usr/bin/perl

@list = (5,4,3,2,1)[1..3];

print "list 的值 = @list\n";

Melaksanakan program di atas, hasil output ialah:

list 的值 = 4 3 2

Laman web PHP Cina