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

ตัวแปร Array

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

ตัวแปรอะเรย์ (Array) ของภาษา Perl นั้นจะแบ่งออกเป็น 2 แบบ

นั่นก็คือ Array แบบธรรมดา และ Hashes Array (หรือจะเรียกว่า Associative Array) ความแตกต่างของอะเรย์ทั้งสองแบบนี้คือ Hashes Array สามารถกำหนดคีย์ (key) ของอะเรย์ได้โดยตรง แต่ Array แบบธรรมดานั้นจะใช้ key แบบตัวเลขเท่านั้นไม่สามารถกำหนดคีย์ (key) เป็นข้อมูลชนิดสตริงได้

การใช้งานของตัวแปร Array แบบธรรมดา

ในภาษา Perl นั้นการที่จะประกาศตัวแปรอะเรย์นั้นต้องประกาศ และเรียกใช้ให้ถูกวิธี ซึ่งการประกาศตัวแปรอะเรย์แบบธรรมดาจะมีความแตกต่างกับการประกาศตัวแปรอะเรย์แบบ Hashes (Associative array) โดยที่เวลาจะประกาศตัวแปรอะเรย์แบบธรรมดาต้องใช้สัญลักษณ์ @ เช่น @arr, @str เป็นต้น แต่ถ้าต้องการกำหนดข้อมูลให้กับสมาชิกแต่ละตำแหน่ง เราสามารถกำหนดโดยอ้างอิงตำแหน่งของข้อมูลที่ต้องการใส่ เช่น $arr[0] = "hello", $arr[1] = "world" เป็นต้น การประกาศตัวแปรอะเรย์ มีรูปแบบต่าง ๆ ดังนี้

#!/usr/bin/perl
@str_num = ("one", "two", "three");
# นั่นก็คือ $str_num[0] = "one", $str_num[1] = "two",# $str_num[2] = "three"
@array = ();
# ทำการประกาศตัวแปรอะเรย์โดยไม่ใส่สมาชิกใด ๆ
$array[0] = "one";
$array[1] = "two";
$array[2] = "three";
# มีค่าเหมือน @arrray = ("one", "two", "three");
print @str_num;
# ค่าที่ได้คือ onetwothree
print @array;
# ค่าที่ได้คือ onetwothree (จะเหมือนกับตัวแปร @str_num)

เมื่อเรามีสมาชิกในอะเรย์แล้ว เราสามารถเรียกดูค่าสมาชิกต่าง ๆ ในอะเรย์ เราสามารถแสดงค่าในอะเรย์ได้หลายวิธี ไม่ว่าจะเป็นการวนลูปแสดงสมาชิกในอะเรย์ การอ้างถึงตำแหน่งที่ต้องการโดยเฉพาะ และการแสดงผลสมาชิกอะเรย์ทุกตัว โดยใช้คำสั่ง print ดังนี้

#!/usr/bin/perl
# การแสดงผลสมาชิกอะเรย์แบบกำหนดตำแหน่ง index เฉพาะเจาะจง
print $array[0];
# แสดงผล one;print $array[2];
# แสดงผล three
# การแสดงผลสมาชิกอะเรย์ทุกตัว
print @array;
# แสดงผล onetwothree
# การวนลูปแสดงผลสมาชิกอะเรย์ สามารถทำได้หลายวิธี เช่น
for $line(@array) { 
	print $line . "\n";
}
# แสดงผล one
# two
# three
for ($i = 0; $i <= 1; $i++) { 
	print $array[$i] . "\n";
}
# แสดงผล one (เนื่องจากเป็นค่าของ $array[0])# two (เนื่องจากเป็นค่าของ $array[1])
for (0 .. 2) { 
	print $array[$_];
}
# แสดงผล one
# two
# three
# ทุกคนอาจจะสงสัยว่า $_ คืออะไรซึ่งเราจะเจอเจ้าตัวนี้ในบทความหน้านะครับ

ในการเรียกดูค่าตำแหน่ง (index) สุดท้ายของอะเรย์นั้นเราจะใช้คำสั่ง $#array ซึ่งในตัวอย่างที่แล้วตัวแปร @array นั้นจะมีสมาชิกทั้งหมด 3 ตัวซึ่งตำแหน่ง index สุดท้ายคือ 2 ดังนั้นผลที่ออกมาจากการใช้คำสั่ง $#array ก็คือ 2 ส่วนการที่เราต้องการลดจำนวนสมาชิกในอะเรย์นั้นเราก็สามารถใช้คำสั่ง $#array ได้เช่นกันนั่นคือ $#array = 1 จะเป็นตัวบอกว่าเราต้องการตัดตำแหน่งสมาชิกอะเรย์ตั้งแต่ตำแหน่งที่ 2 ออกไป ดังนั้นจะเหลือสมาชิกเพียง 2 ตัวคือ @array = ("one", "two") ดังตัวอย่าง

#!/usr/bin/perl
print $#array;
# จะแสดงผล 2
# เรายังสามารถใช้เป็นประโยชน์ในการวนลูปแสดงผลสมาชิกทั้งหมดได้อีกดังนี้
for ($i = 0; $i <= $#array; $i++) { 
	print $array[$i];
}
# จะแสดงผลสมาชิกทุกตัวออกมา
$#array = 1;
# เพราะฉะนั้นตอนนี้ตัวแปร @array = ("one", "two") 

การใช้งานของตัวแปร Array Hashes

หลังจากที่ทราบวิธีการใช้งานตัวแปร Array แบบธรรมดาไปกันแล้ว คราวนี้เรามาดูการใช้งานตัวแปรแบบ Hashes กันดีกว่า ซึ่งข้อดีของตัวแปรอะเรย์ Hashes นั้นก็คือเราสามารถกำหนดคีย์ หรืออินเด็กซ์เป็นชนิดสตริงหรือข้อความแทนได้ แล้วการใช้งานที่แตกต่างก็คือตัวแปร Array Hashes จะประกาศโดยใช้สัญลักษณ์ % เช่น %array, %str_num เป็นต้น ส่วนการเข้าถึงสมาชิกในอะเรย์การเข้าถึงโดยใช้สัญลักษณ์ $array{"key"} เพื่อความเข้าใจง่าย ๆ เรามาลองดูตัวอย่างกันเลยดีกว่า ^^

#!/usr/bin/perl
%array = ("prefix" => "Mr", "name" => "Nontachai", "surname" => "Saptawepong");
# ซึ่งความหมายนั้นก็คือ $array{"prefix"} จะมีค่าเป็น Mr, 
# $array{"name"} จะมีค่าเป็น Nontachai, 
# $array{"surname"} จะมีค่าเป็น Saptawepong
print $array{"prefix"} . " " . $array{"name"} . " " . $array{"surname"};
# ค่าที่ได้คือ Mr Nontachai Saptawepong
# ในกรณีที่ต้องการ list key ทั้งหมดของตัวแปรอะเรย์ออกมาต้องใช้คำสั่งดังนี้
@keys_arr = keys %array;
# @keys_arr = ("prefix", "name", "surname");

เอาล่ะครับ คราวนี้ผมหวังว่าผู้ที่เริ่มต้นเขียนภาษา Perl คงจะพอมีแนวทางการใช้งานตัวแปร Array เพิ่มมากขึ้นนะครับ คือผมก็หวังว่าบทความนี้ของผมจะมีประโยชน์ไม่มากก็น้อยนะครับ มีอะไรติชมก็เขียนได้นะครับ

แหล่งที่มา:

Related Article

Related Download

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


Login  Login
ค้นหา  Search