เหตุผลที่เราต้องใช้อะเรย์ 2 มิติ (หรือหลายมิติ) นั้นก็เพื่อประหยัดทรัพยากรตัวแปรให้ใช้งานน้อยลง ซึ่งการใช้งานนั้นจะต้องคำนึงถึงด้วยว่าการที่จะใช้เป็นตัวแปรอะเรย์ 2 มิติหรือหลายมิตินั้น จะต้องเป็นการใช้งานในทางเดียวกัน เช่น ถ้ามีข้อมูลนักศึกษา 3 คน ในการเก็บข้อมูลเข้าตัวแปรอะเรย์แบบมิติเดียวนั้นจะต้องเก็บถึง 3 ตัวแปร แต่ถ้าเราใช้ตัวแปรอะเรย์ 2 มิติเราสามารถลดให้เหลือเพียง 1 ตัวแปรได้ และสามารถเข้าถึงข้อมูลที่ต้องการได้ง่ายด้วย (อาจจะเป็นวิธีวนลูปแสดงข้อมูลทั้งหมดหรือการใช้งานในด้านอื่น ๆ ) ดังตัวอย่าง
#!/usr/bin/perl
@array1 = ('20020701', 'Sending Mail in Perl', 'Philip Yuson');
@array2 = ('20020601', 'Manupulating Dates in Perl', 'Philip Yuson');
@array3 = ('20020501', 'GUI Application for CVS', 'Philip Yuson');
# แต่ถ้าเราใช้ตัวแปรอะเรย์แบบ 2 มิติดังนั้นจะเหลือเพียงตัวแปรเดียว
@array = (['20020701', 'Sending Mail in Perl', 'Philip Yuson'],
['20020601', 'Manupulating Dates in Perl', 'Philip Yuson'],
['20020501', 'GUI Application for CVS', 'Philip Yuson']);
# $array[0] = ('20020701', 'Sending Mail in Perl', 'Philip Yuson');
# $array[1] = ('20020601', 'Manupulating Dates in Perl', 'Philip Yuson');
# $array[2] = ('20020501', 'GUI Application for CVS', 'Philip Yuson');
# ถ้าเราต้องการแสดงผลข้อมูลทั้งหมดในอะเรย์
for ($i = 0; $i <= $#array; $i++) {
print $array[$i]->[0] . "|" . $array[$i]->[1] . "|" . $array[$i]->[2] . "\n";
}
# 20020701|Sending Mail in Perl|Philip Yuson
# 20020601|Manupulating Dates in Perl|Philip Yuson
# 20020501|GUI Application for CVS|Philip Yuson
เมื่อเราทราบถึงเหตุผลที่จำเป็นต้องใช้ตัวแปรอะเรย์แบบ 2 มิติแล้ว คราวนี้เราลองมาดูวิธีการสร้างอะเรย์ 2 มิติกันดีกว่า โดยการสร้างอะเรย์ 2 มิติมีรูปแบบดังนี้
@array1 = ('20020701', 'Sending Mail in Perl', 'Philip Yuson');
@array2 = ('20020601', 'Manupulating Dates in Perl', 'Philip Yuson');
@array3 = ('20020501', 'GUI Application for CVS', 'Philip Yuson');
@main = (/@array1, /@array2, /@array3);
# ผลที่ได้จากการใส่ตัวแปรอะเรย์เข้าไป คือ
# @main = (['20020701', 'Sending Mail in Perl', 'Philip Yuson'],
# ['20020601', 'Manupulating Dates in Perl', 'Philip Yuson'],
# ['20020501', 'GUI Application for CVS', 'Philip Yuson']);
#นี่คืออะเรย์ 2 มิติ แต่ถ้าเราใส่ตัวแปรอะเรย์โดยไม่มี / นำหน้า เช่น
@main = (@array1, @array2, @array3);
# ก็เหมือนเราใส่ค่าตัวแปร Scalar เข้าไปเฉย ๆ ผลที่ได้คือ
# @main = ('20020701', 'Sending Mail in Perl', 'Philip Yuson',
# '20020601', 'Manupulating Dates in Perl', 'Philip Yuson',
# '20020501', 'GUI Application for CVS', 'Philip Yuson');
# นั่นก็คือยังคงเป็นตัวแปรอะเรย์มิติเดียวเหมือนเดิม เหมือนเอาค่าในอะเรย์มาเรียงกันเท่านั้น
$ref = $main[0]; # เป็นการอ้างอิงถึงตัวแปรอะเรย์ /@array1(ก็คือมิติแรก) $ref->[0]; # จะทำการคืนค่าเป็นรายการแรกของอะเรย์ @array1 หรือก็คือ $main[0][0]; $ref->[1]; # จะคืนค่า $main[0][1]; $ref = $main[1]; # เป็นการอ้างอิงตัวแปรอะเรย์ /@array2 $ref->[0]; # จะคืนค่า $main[1][0]; # หรือจะใช้แบบนี้ ในการอ้างถึงค่าของ 2 มิติคือ $main[0]->[0]; $main[0][0]; # ถ้าต้องการดึงค่าของคอลัมน์ที่ 2 ในแถวที่ 3 จะต้องทำการอ้างอิงดังนี้ $ref = $main[2]; # Third row $ref->[1]; # second column
ในการสร้างอะเรย์หลายมิตินั้น ก็มีหลักการเดียวกับการสร้างอะเรย์ 2 มิติแหละครับ เพียงแต่จะทำการแยกแต่ละมิติออกจากกันโดยใช้สัญลักษณ์ [ ] ดังตัวอย่าง
@main = ([\@array1, \@array2, \@array3],
[\@array4, \@array5, \@array6]);
เอาละครับ จบบทความนี้แล้วผมก็หวังว่าผู้ที่มาอ่านบทความนี้จะได้รับความรู้เกี่ยวกับการใช้งานอะเรย์หลายมิติกลับไปใช้งานกันนะครับ ซึ่งประโยชน์ของมันก็มีมากมายเลยครับ สำหรับคนที่ยังไม่เคยใช้ก็ลองหัดใช้ดูละกันครับ มีอะไรต้องการตำหนิหรือชมก็ Post ไว้นะครับ
Login
Search