Home
Course
Service
Contact
About Us

 

 

 

 

 

 

 

 

 


ARRAYS

อาร์เรย์คือความสามารถที่พิเศษอีกอย่างหนึ่งของภาษา PHP ที่เราสามารถนำค่าของข้อมูลที่แตกต่างกัน (เลขจำนวนเต็ม เลขทศนิยม ข้อความ) มาเก็บรวมเป็นรายการในชุดเดียวกันได้ และขนาดของอาร์เรย์มีการเปลี่ยนแปลงได้อย่างอิสระ ทำให้ง่ายต่อการนำอาร์เรย์ไปใช้งาน โดยไม่ต้องคำนึงถึงเรื่องการจองหน่วยความจำเพิ่มเมื่อมีการนำค่ามาใส่ในอาร์เรย์ หรือการปลดปล่อยหน่วยความจำ เมื่อยกเลิกการใช้อาร์เรย์ชุดนั้นแล้ว ข้อมูลที่จัดเก็บในอาร์เรย์จะแบ่งออกได้สองส่วน

ส่วนแรกคือเลขดัชนีหรือเลขที่ใช้ระบุตำแหน่งของข้อมูลในอาร์เรย์และส่วนที่สองคือค่าของข้อมูลที่ถูกจัดเก็บไว้ในอาร์เรย์ ข้อมูลที่ถูกเก็บในอาร์เรย์เรียกว่าข้อมูลที่มีมิติ ซึ่งอาจจะเก็บข้อมูลในอาร์เรย์แบบมิติเดียว หรือสองหรือสามมิติก็ได้ซึ่งขึ้นอยู่กับความต้องการที่แตกต่างกัน


ตัวอย่างการกำหนดเลขดัชนีของอาร์เรย์ในมิติต่างๆ
โดยให้ $arr แทนตัวแปรของอาร์เรย์
n แทนเลขของดัชนีที่ต้องการระบุถึงค่าของข้อมูลที่เก็บในอาร์เรย์
D แทนค่าของข้อมูลที่มีแบบข้อมูลเป็นแบบชนิดใดก็ได้
จำนวนของมิติ(dimention) การระบุเลขดัชนี ค่าของข้อมูลที่เก็บ
1 $arr [n] D
2 $arr [n][n] D
3 $arr [n][n][n] D
4 $arr [n][n][n][n] D
. . .
. . .


การกำหนดตัวแปรอาร์เรย์เพื่อนำไปใช้งานในโปรแกรม

ตัวแปรอาร์เรย์ก็ถือว่าไม่แตกต่างไปจากตัวแปรแบบอื่นที่เราใช้ในภาษา PHP คือเมื่อเรากำหนดตัวแปรขึ้นมาเพื่อใช้เป็นอาร์เรย์เราไม่จำเป็นต้องกำหนด แบบข้อมูล ก่อนว่าเป็นข้อมูลแบบอาร์เรย์ ซึ่งประเภทของแบบข้อมูลนั้น จะถูกกำหนดให้ตอนที่โปรแกรมทำงาน( Run time) ที่คำสั่งนั้น เช่น คำสั่ง $arr[] = 20 ถึงแม้ว่าตัวแปร $arr จะไม่ได้ถูกกำหนดไว้ก่อนว่าเป็นตัวแปรแบบอาร์เรย์ แต่เมื่อโปรแกรมทำงานมาถึงคำสั่งนี้ โปรแกรมก็จะตีความหมายว่าตัวแปร $arr เป็นตัวแปรที่มีแบบข้อมูล เป็นอาร์เรย์และมีเลขดัชนีเริ่มต้นคือศูนย์(เพราะเราไม่ได้กำหนดค่าของเลขดัชนีเริ่มต้น) และค่าที่ถูกกำหนดให้กับตัวแปรอาร์เรย์ $arr[0] คือ 20 อย่างนี้เป็นต้น
การใช้ตัวแปรอาร์เรย์แบบไม่ต้องกำหนดแบบข้อมูลประเภทอาร์เรย์ก่อน
เช่น
1 <?
2 $arr_1[1] = 200; // $arr_1 เป็นอาร์เรย์มิติเดียว
3 $arr_2[1] [1] = 400; // $arr_2 เป็นอาร์เรย์สองมิติ
4 $arr_3[1] [1] [1] = 600; // $arr_3 เป็นอาร์เรย์สามมิติ
5 ?>

การใช้ตัวแปรอาร์เรย์แบบมีการกำหนดแบบข้อมูลประเภทอาร์เรย์ก่อน
เช่น
1 <?
2 $arr_1 = array(); // กำหนดให้ $arr_1 เป็นอาร์เรย์ว่าง
3 $arr_1 [1] = 200; // $arr_1 เป็นอาร์เรย์มิติเดียว
4 $arr_2 = array(); // กำหนดให้ $arr_1 เป็นอาร์เรย์ว่าง
5 $arr_2[1] [1] = 400; // $arr_2 เป็นอาร์เรย์สองมิติ
6 $arr_3 = array(); // กำหนดให้ $arr_1 เป็นอาร์เรย์ว่าง
7 $arr_3[1] [1] [1] = 600; // $arr_3 เป็นอาร์เรย์สามมิติ
8 ?>


การกำหนดค่าในรายการอาร์เรย์โดยใช้คำสั่ง ARRAY

จากตัวอย่างเราได้มีการสร้างตัวแปรอาร์เรย์ด้วยคำสั่งฟังก์ชั่น array() แต่ไม่มีการกำหนดค่าให้กับตัวแปรอาร์เรย์ที่สร้างขึ้นมา ซึ่งค่าของรายการในตัวแปรอาร์เรย์นั้น สามารถที่จะระบุได้ด้วยคำสั่งของฟังก์ชั่นarray() โดยค่าของข้อมูลแต่ละค่า จะถูกคั่นด้วยเครื่องหมาย comma(,)
รูปแบบการกำหนดค่าให้กับตัวแปรอาร์เรย์โดยใช้คำสั่งฟังก์ชั่น array()
ตัวแปรอาร์เรย์ = array(ค่าที่1, ค่าที่2, ค่าที่3, ค่าที่4, ค่าที่5, ค่าที่6…..);


ตัวอย่างที่ 9
1 <?
2 $arr = array(10,20,30.50,"php","programming");
3 for ( $r = 0 ; $r < count($arr) ; $r++) {
4 echo ( "ค่าดัชนี $r มีค่าเท่ากับ $arr[$r]<br>");
5 }
6 ?>

จากโปรแกรมตัวอย่างจะเห็นว่าคำสั่งฟังก์ชั่น array() มีการระบุค่าข้อมูล ที่ต้องการจะเพิ่มเข้าไปในตัวแปรอาร์เรย์ $arr เมื่อสร้างตัวแปรนี้ขึ้นมา โดยค่าของดัชนีจะเริ่มต้นที่ศูนย์แล้วเพิ่มขึ้นทีละหนึ่ง ซึ่งค่าของข้อมูลที่จะใส่ในตัวแปรอาร์เรย์จะเริ่มต้น ที่ค่าที่อยู่ทางซ้ายสุดของรายการค่าทั้งหมดแล้วเลื่อนถัดไปทางขวาของรายการค่าที่กำหนดมาในคำสั่งฟังก์ชั่น array()

ตารางแสดงการกำหนดค่าให้กับตัวแปร $arr
$arr = array(10,20,30.50,"php","programming");
จะเก็บข้อมูลดังนี้
$arr[0] = 10
$arr[1] = 20
$arr[2] = 30.50
$arr[3] = "php"
$arr[4] = "programming"

จะได้เอ้าพุทคือ
ค่าดัชนี 0 มีค่าเท่ากับ 10
ค่าดัชนี 1 มีค่าเท่ากับ 20
ค่าดัชนี 2 มีค่าเท่ากับ 30.50
ค่าดัชนี 3 มีค่าเท่ากับ php
ค่าดัชนี 4 มีค่าเท่ากับ programming

การระบุตำแหน่ง กำหนดค่า และการอ่านค่าจากตัวแปรอาร์เรย์
สิ่งสำคัญที่สุดในการเข้าถึงข้อมูลในตัวแปรอาร์เรย์นั้น เราต้องรู้เลขดัชนีที่จะใช้เป็นตัวระบุที่อยู่ของค่าข้อมูลที่ต้องการอ่าน หรือใส่ค่าข้อมูลใหม่ในตัวแปรอาร์เรย์นั้น การอ้างถึงที่อยู่ของข้อมูลในตัวแปรอาร์เรย์นั้น ตัวแปรอาร์เรย์ต้องตามด้วย[n](ในกรณีอาร์เรย์มิติเดียว

n คือเลขดัชนีที่ต้องการระบุ) หรือ[n][n](ในกรณีอาร์เรย์สองมิติ n คือเลขดัชนีที่ต้องการระบุ)


ตัวอย่างที่ 9.1
1 <?
2 // กำหนดแบบข้อมูลของตัวแปร $arr_1 ให้เป็นอาร์เรย์ว่าง
3 $arr1 = array();
4 // 10,11 คือเลขดัชนีที่ต้องการระบุที่อยู่ของข้อมูลในตัวแปรอาร์เรย์
5 $arr1[10] = 2000; // $arr1 คือตัวแปรอาร์เรย์มิติเดียว
6 $arr1[11] = 4000;
7 // 1,2 คือเลขดัชนีที่ต้องการระบุที่อยู่ของข้อมูลในตัวแปรอาร์เรย์
8 $arr2[1] [1] = 6000; // $arr2 คือตัวแปรอาร์เรย์สองมิติ
9 $arr2[2] [2] = 8000;
10 echo "ค่าจากตัวแปรอาร์เรย์มิติเดียวในตำแหน่งที่ 11 คือ $arr1[11]<br>";
11 echo "ค่าจากตัวแปรอาร์เรย์สองมิติในตำแหน่งที่ 2 คือ " . $arr2[2] [2];
12 ?>

จะได้เอ้าพุทคือ
ค่าจากตัวแปรอาร์เรย์มิติเดียวในตำแหน่งที่ 11 คือ 4000
ค่าจากตัวแปรอาร์เรย์สองมิติในตำแหน่งที่ 2 คือ 8000


รูปแบบการเขียนคำสั่งฟังก์ชั่น array() แบบหลายมิติ

$arr = array(สมาชิก หรือ Member);
$arr = array(เลขดัชนีระบุตำแหน่ง => ค่าของข้อมูล);
1 มิติ $arr = array(1 => "one");
2 มิติ $arr = array(1 => array(2 => "two"));
3 มิติ $arr = array(1 => array(2 => array(3 => "three")));
ตัวอย่างต่อไปเป็นการแนะนำคำสั่งฟังก์ชั่น array() มาสร้างอาเรย์แบบสองมิติ เพื่อให้เกิดความเข้าใจในเรื่องของการใช้ตัวแปรมากยิ่งขึ้น


ตัวอย่างที่ 9.2
1 <?
2 Define("nl","<br>");
3 $arr = array(
4 1 =>array("อาจารย์1" =>" Suwit ","อาจารย์2" =>" Terapong "),
5 2 =>array("อาจารย์3" =>" Chatree ","อาจารย์4" =>"Sala"));
6 echo"รายชื่ออาจารย์ที่สอนหลักสูตร Web Technology ",nl;
7 echo $arr ["1"] ["อาจารย์1"],nl;
8 echo $arr ["1"] ["อาจารย์2"],nl;
9 echo $arr ["2"] ["อาจารย์3"],nl;
10 echo $arr ["2"] ["อาจารย์4"];
11 ?>

จะได้เอ้าพุทคือ
รายชื่ออาจารย์ที่สอนหลักสูตร Web Technology
Suwit
Terapong
Chatree
Sala

จากตัวอย่างเป็นอาเรย์แบบสองมิติที่มีสองชุด ซึ่งมีรูปแบบที่มองแล้วเข้าใจง่ายๆ ดังนี้
$arr = array(1 => array(สมาชิก1) , 2 => array(สมาชิก2)); ซึ่ง
สมาชิก1 ประกอบด้วย "อาจารย์1" =>" Suwit ","อาจารย์2" =>" Terapong " และ
สมาชิก2 ประกอบด้วย "อาจารย์3" =>" Chatree ","อาจารย์4" =>"Sala"

ฟังก์ชั่นที่เกี่ยวกับตัวแปรอาร์เรย์ (Array Function)

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

ฟังก์ชั่น count
รูปแบบการใช้ฟังก์ชั่น
void count(array arr); เป็นคำสั่งที่ใช้นับจำนวนของข้อมูลที่เก็บอยู่ภายในรายการข้อมูลของอาร์เรย์นั้น ว่ามีจำนวนข้อมูลทั้งหมดเท่าไร


ตัวอย่างที่ 10
1 <?
2 $sort = array(50,100,150,200);
3 echo count($sort);
4 ?>

จะได้เอ้าพุทเท่ากับ 4


ฟังก์ชั่น current

รูปแบบการใช้ฟังก์ชั่น
mixed current(array arr); เป็นคำสั่งที่ใช้ในการคืนค่าของข้อมูล ที่ตำแหน่งพอยน์เตอร์ (pointer) ชี้อยู่ (ภายในรายการข้อมูลของอาร์เรย์จะมีพอยน์เตอร์(pointer)เป็นตัวระบุตำแหน่งปัจจุบันของข้อมูลนั้น)

ตัวอย่างที่ 11
1 <?
2 $sort = array(50,100,150,200);
3 echo current ($sort),"<br>"; // แสดงค่า 50
4 next($sort); // เลื่อน pointer ไปยังข้อมูลตัวต่อไป
5 echo current ($sort); // แสดงค่า 100
6 ?>

จะได้เอ้าพุทคือ 50
100


ฟังก์ชั่น end
รูปแบบการใช้ฟังก์ชั่น
void end(array arr); เป็นคำสั่งที่ใช้เลื่อน pointer ที่ชี้ตำแหน่งที่อยู่ของข้อมูลปัจจุบัน ไปยังตำแหน่งที่อยู่สุดท้ายของรายการข้อมูลของอาร์เรย์นั้น


ตัวอย่างที่ 12
1 <?
2 $sort = array(50,100,150,200);
3 echo current ($sort)."<br>"; // แสดงค่า 50
4 end($sort); // เลื่อน pointer ไปยังข้อมูลตัวตัวสุดท้าย
5 echo current ($sort); // แสดงค่า 200
6 ?>

จะได้เอ้าพุทคือ 50
200

 



:: ศูนย์ฝึกอบรมบางปะกง การไฟฟ้าฝ่ายผลิตแห่งประเทศไทย 8/4 หมู่ 8 ตำบลท่าข้าม อำเภอบางปะกง จังหวัดฉะเชิงเทรา 24130 ::