บทความ:
Perl
PHP
HTML
CSS
XML
DTD
XSD
RSS
WSDL
Linux
Site Map
Board
Connect Us: facebooktwitter

Array หลายมิติ

นนทชัย ทรัพย์ทวีพงศ์ 2009-08-02 19:27:20  ให้คะแนนบทความนี้(0)  ลดคะแนนบทความ(0)  จำนวน Comment(0)  จำนวนคนอ่าน(1450)  

การสร้างอะเรย์ 2 มิติ ในภาษา Perl

เหตุผลที่เราต้องใช้อะเรย์ 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'); 
# นั่นก็คือยังคงเป็นตัวแปรอะเรย์มิติเดียวเหมือนเดิม เหมือนเอาค่าในอะเรย์มาเรียงกันเท่านั้น 

การอ้างอิงค่าในอะเรย์ 2 มิติ

$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 ไว้นะครับ

แหล่งที่มา:

Related Article

Related Download

ไม่มีรายการดาวน์โหลด


Login  Login
ค้นหา  Search