|
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
|