You are on page 1of 56

Arrays

1
เนื้อหา
 อาร์ เรย์ความหมายของ Arrays
 อินเด็กซ์ (Index) ของ Arrays
 อาร์ เรย์หลายมิติ (Multi-dimension array)
 การเรี ยงลำดับในอาร์ เรย์
 การจัดการอาร์ เรย์โดยใช้ ฟังก์ชนั

2
อาร์เรย์ความหมายของ Arrays
อาร์ เรย์ คือ ชุดของตัวแปรที่จดั เก็บในหน่วยความจำต่อเนื่องกัน เพื่อเก็บข้ อมูล
ที่อยูใ่ นกลุม่ เดียวกัน
ขนาดของอาร์ เรย์จะขึ ้นกับมิติ (Dimension)
ตัวแปรที่จดั เก็บในอาร์ เรย์เรี ยกว่า Element โดยในแต่ละ Element จะมี
ตัวดัชนี (Index) เพื่อระบุตำแหน่งของข้ อมูลในหน่วยความจำ

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

4
การกำหนดอินเด็กซ์ของอาร์เรย์เป็ นตัวเลข
โดยปกติอินเด็กซ์ของอาร์ เรย์ จะเป็ นตัวเลขอยูแ่ ล้ ว ซึง่ ใน PHP อินเด็กซ์จะเริ่มต้ นที่ 0, 1, 2, ... ,
n โดยที่เราสามารถสร้ างอาร์เรย์ได้ จากฟั งก์ชนั array() และ range()

5
การสร้างอาร์เรย์ดว้ ยฟังก์ชนั array()
รู ปแบบ array array([mixed ...] );

ฟั งก์ชนั นี ้สามารถสร้ างอาร์ เรย์ได้ ทงที


ั ้ ่มีอินเด็กซ์เป็ นตัวเลข และตัวอักษร ด้ วยการกำหนดค่าให้ กบั
สมาชิกของอาร์ เรย์โดยตรง

6
Example: array()
$province = array("Chiangmai", "Phayao");

for($i = 0; $i < count($province); $i++){


echo $province[$i];
echo "<br/>";
} $province[0] = Chiangmai
$province[1] = Phayao
[0] [1]
Chiangmai Phayao

อาร์ เรย์ $province 7


การสร้างอาร์เรย์ดว้ ยฟังก์ชนั range()
รู ปแบบ array range(int low, int high);

ฟั งก์ชนั นี ้สามารถสร้ างอาร์ เรย์ที่เก็บช่วงของตัวเลขจากค่าต่ำสุดไปหาค่าสูงสุดที่


กำหนด

low ค่ าเริ่มต้ นของอาร์ เรย์


high ค่ าสู งสุ ดของอาร์ เรย์
8
Example: range()
$value = range(6, 10);

for($i = 0; $i < count($value); $i++){


echo "value[" . $i . "] =";
echo $value[$i];
echo "<br/>"; $value[0] = 6
} $value[1] = 7
$value[2] = 8
$value[3] = 9
$value[4] = 10
9
การนับจำนวนอีลีเมนต์ในอาร์เรย์
ฟั งก์ชนั count()

รู ปแบบ int count(array array);

array ชื่อของอาร์ เรย์  ใช้ สำหรับนับจำนวนสมาชิกในอาร์ เรย์

10
count()
$student = array("ANT", "BAT", "CAT");

echo “Count array student : ";


echo count($student);
Count array student: 3

11
การสลับค่าข้อมูลในอาร์เรย์
PHP มีฟังก์ชนั ที่ช่วยในการสลับค่าอื่นๆ นอกเหนือจากการเรี ยงลำดับข้ อมูล
ประกอบด้ วย
◦ ฟั งก์ชนั shuffle()
◦ ฟั งก์ชนั array_reverse()

12
shuffle()
รู ปแบบ void shuffle(array array);

ใช้ สำหรับสลับข้ อมูลในอาร์ เรย์แบบสุม่


array ชื่อของอาร์ เรย์

13
shuffle()
$arr = array(10, 1, 15, 66, 45);
shuffle($arr);
for($i=0; $i<count($arr); $i++){
echo $arr[$i] . " ";
} // Result may be
66 10 1 45 15

// Result may be
10 1 15 45 66

ในการใช้ งานฟังก์ ชัน shuffle() จะเป็ นการสุ่ มข้ อมูลแล้ วจัดเรียงใหม่ ซึ่งจะไม่ ซ้ำกัน

14
array_reverse()

รู ปแบบ array array_reverse(array array);

ใช้ สำหรับกลับค่าข้ อมูลในอาร์ เรย์ จากข้ างหลังไปข้ างหน้ า และ จากข้ างหน้ าไปข้ างหลัง

array ชื่อของอาร์ เรย์

15
array_reverse()
$number = range(1, 10);

echo "Value before reverse: <br>";

for($i=0; $i < count($number); $i++){


echo $number[$i] . " " ;
}

$number1 = array_reverse($number); // REVERSE ELEMENT IN ARRAY

echo "<br>Value after reverse: <br>"; Value before reverse


for($i=0; $i < count($number); $i++){
echo $number1[$i] . " " ; 1 2 3 4 5 6 7 8 9 10
} Value after reverse
10 9 8 7 6 5 4 3 2 1
16
การกำหนดอินเด็กซ์ของอาร์เรย์เป็ นตัวอักษร
การกำหนดอินเด็กซ์ของอาร์ เรย์เป็ นตัวอักษร เรี ยกว่า
Associative array โดยมีวิธีการดังนี ้
◦ วิธีการสร้ างอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวอักษร
◦ การเข้ าถึงข้ อมูลภายในอาร์ เรย์ที่เป็ นตัวอักษร

17
วิธีการสร้างอาร์เรย์ที่มีอินเด็กซ์เป็ นตัวอักษร
การสร้ างอาร์ เรย์โดยกำหนดอินเด็กซ์เป็ นตัวอักษรใช้ ฟังก์ชนั array() เหมือน
กับการสร้ างอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวเลข ต่างกันที่การกำหนดชื่อของอินเด็กซ์
ที่จะต้ องตามด้ วยเครื่ องหมาย => ตามด้ วยค่าของข้ อมูล ดังแสดงในตัวอย่าง

18
Example: array()
อินเด็กซ์ (key)
ค่ าของข้ อมูล (value)

$province = array("cm"=>"chiangmai", "py"=> "Phayao" );

while($data = each($province )){


echo $data["key"]; cm chiangmai
echo “ = " ; py Phayao
echo $data["value"];
echo "<br/>";
} อินเด็กซ์ (key)
cm = chiangmai ค่ าของข้ อมูล (value)
py = phayao
19
วิธีการกำหนดค่าให้อาเรย์ที่มีอินเด็กซ์เป็ นตัว
อักษร
$province[‘CM’] = “chiangmai”;
$province[‘CR’] = “chiangrai”;
$province[‘PY’] = “phayao”;

การกำหนดค่าในอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวอักษร เราสามารถทำได้ เหมือนอาร์ เรย์ที่มี


อินเด็กซ์เป็ นตัวเลข

20
การเข้าถึงข้อมูลภายในอาร์เรย์
การเข้ าถึงข้ อมูลภายในอาร์ เรย์ที่เป็ นตัวอักษร สามารถระบุชื่ออินเด็ก
ซ์ที่ต้องการเข้ าถึง หรื อใช้ คำสัง่ ในการวนรอบ (Loop) ที่จะต้ องใช้ ควบคูก่ บั
ฟั งก์ชนั
◦ each()
◦ list()

21
each()

รู ปแบบ array each(array array );

array ชื่อของอาร์ เรย์

เป็ นฟั งก์ชนั ที่มีการคืน 2 ค่า คืออินเด็กซ์ และค่าของข้ อมูล และจะ return false
เมื่ออ่านข้ อมูลจนหมดอาร์ เรย์แล้ ว

22
Example: array()
อินเด็กซ์ (key)
ค่ าของข้ อมูล (value)

$province = array("cm"=>"chiangmai", "py"=> "Phayao" );

while($data = each($province )){


echo $data["key"]; cm chiangmai
echo " = " ; py Phayao
echo $data["value"];
echo "<br/>";
} อินเด็กซ์ (key)
cm= chiangmai ค่ าของข้ อมูล (value)
py= phayao
23
list()
รู ปแบบ void list(mixed … );

… ชื่อของตัวแปรชนิด เป็ นฟั งก์ชนั ที่มีการทำงานใน


ใดๆ ก็ได้ ทนี่ ิสิต ลักษณะเดียวกับ each() ต่างกันที่
list() จะแยกอาร์ เรย์ออกจากกัน
ต้ องการกำหนด
และเก็บค่าในตัวแปรที่กำหนด

24
Example: list()
ค่ าของข้ อมูล (value)
อินเด็กซ์ (key)

$province = array("cm"=>"chiangmai", "py"=> "Phayao" );

while(list($key, $value) = each($amphur_list)){


echo $key; cm chiangmai
echo "=" ; py Phayao
echo $value;
}
อินเด็กซ์ (key)

cm= chiangmai ค่ าของข้ อมูล (value)


py = phayao
25
in_array()

รู ปแบบ in_array ( mixed $needle , array $haystack)

 เป็ นฟั งก์ชนั ที่ใช้ ตรวจสอบข้ อมูลว่ามีข้อมูลที่ต้องการค้ นหา อยูใ่ นอาเรย์หรื อไม่ ถ้ ามีจะ
ส่งกลับค่า true ถ้ าไม่มีจะส่งกลับค่า false

$needle ข้ อมูลที่ต้องการค้ นหา


$haystack อาเรย์

26
Example: list()
ค่ าของข้ อมูล (value)
อินเด็กซ์ (key)

$province= array(“Chiangmai","Phayao", "Lampang");

if(in_array(“Chiangmai”,$province){
echo “<p>มีขอ้ มูล</p>”;
}
else{
echo “<p>ไม่มีขอ้ มูล</p>”;
}
มีขอ้ มูล

27
อาร์เรย์หลายมิติ (Multi-dimension array)
ั ้ 2 มิติ จนถึง n มิติ
อาร์ เรย์หลายมิติ เป็ นอาร์ เรย์ซ้อนอาร์ เรย์ มีตงแต่

ในกรณีของอาร์ เรย์ 2 มิติเราสามารถเปรี ยบเทียบได้ กบั Matrix


หรื อ Grid ที่ประกอบด้ วยแถว (Row) และ คอลัมน์
(Column)

28
อาร์เรย์หลายมิติที่มีการใช้อินเด็กซ์แบบเป็ นตัวเลข
ID NAME ADDRESS
46330001 ANT CHIANGMAI
ROW
46330002 BAT CHIANGRAI
46330003 CAT PHAYAO

COLUMN
$student = array(array(46330001, "ANT", "CHIANGMAI"),
array(46330002, "BAT", "CHIANGRAI"),
array(46330003, "CAT", "PHAYAO")
); 29
อาร์เรย์หลายมิติที่มีการใช้อินเด็กซ์แบบเป็ นตัวเลข
ID NAME ADDRESS
$student[0][0] $student[0][1] $student[0][2]
ROW
$student[1][0] $student[1][1] $student[1][2]
$student[2][0] $student[2][1] $student[2][2]

COLUMN
$student = array(array(46330001, "ANT", "CHIANGMAI"),
array(46330002, "BAT", "CHIANGRAI"),
array(46330003, "CAT", "PHAYAO")
); 30
อาร์เรย์หลายมิติที่มีการใช้อินเด็กซ์แบบเป็ น
ตัวเลข
$student = array(array(46330001, "ANT", "CHIANGMAI"),
array(46330002, "BAT", "CHIANGRAI"),
array(46330003, "CAT", "PHAYAO")
);

for($row = 0; $row < 3; $row++){


for($column = 0; $column < 3; $column++){
echo "[student[$row][$column]=" ;
echo $student[$row][$column];
echo "] ";
} // end for column
echo "<br/>";
} // end for row
31
อาร์เรย์หลายมิติที่มีการใช้อินเด็กซ์แบบเป็ นตัวอักษร
ID NAME ADDRESS
46330001 ANT CM
ROW
46330002 BAT CR
46330003 CAT PYO

COLUMN
$student = array(array("ID" =>46330001, "NAME" =>"ANT", "ADDRESS" => "CM"),
array("ID" =>46330002, "NAME" =>"BAT", "ADDRESS" => "CR"),
array("ID"=>46330003, "NAME" =>"CAT", "ADDRESS" => "PYO")
);

32
อาร์เรย์หลายมิติที่มีการใช้อินเด็กซ์แบบเป็ นตัวอักษร
$student=array(array("ID"=>46330001, "NAME"=>"ANT", "ADDRESS" => "CM"),
array("ID"=>46330002, "NAME"=>"BAT", "ADDRESS"=> "CR"),
array("ID"=>46330003, "NAME"=>"CAT", "ADDRESS" => "PYO")
);

for($row = 0; $row < 3; $row++){


echo "[" . $student[$row]["ID"] . "|" ;
echo $student[$row]["NAME"] . "|" ;
echo $student[$row]["ADDRESS"] . "]";
echo "<br/>";
} // end for row

33
การเรี ยงลำดับในอาร์เรย์ 1 มิติ
การเรี ยงลำดับข้ อมูลในอาร์ เรย์ทำได้ โดยการนำแต่ละ Element
ในอาร์ เรย์มาทำการเปรี ยบเทียบกัน โดยแยกตามประเภทของอินเด็ก
ซ์ของอาร์ เรย์ คือ
◦ การเรี ยงลำดับอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวเลข
◦ การเรี ยงลำดับอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวอักษร

34
การเรี ยงลำดับอาร์เรย์ที่มีอินเด็กซ์เป็ นตัวเลข
การเรี ยงลำดับข้ อมูลของอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวเลข 1 มิติ
ประกอบด้ วย
◦ การเรี ยงลำดับข้ อมูลจากน้ อยไปมาก: ฟั งก์ชนั sort()
◦ การเรี ยงลำดับข้ อมูลจากมากไปน้ อย: ฟั งก์ชนั rsort()

35
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวเลข
จากน้อยไปมาก
รู ปแบบ void sort(array array);

array ชื่อของอาร์ เรย์

36
Example: sort()
$animal = array("bat", "ant", "cat");

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i];
echo "<br/>"; animal[0] = bat
} animal[1] = ant
animal[2] = cat

37
Example: sort()
$animal = array("bat", "ant", "cat");

sort($animal); // sort ascending

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i];
echo "<br/>";
animal[0] = ant
}
animal[1] = bat
animal[2] = cat
38
Example: sort()
$animal = array("bat", "ant", "Cat");

sort($animal); // sort ascending

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i]; animal[0] = Cat
echo "<br/>"; animal[1] = ant
} animal[2] = bat
ในการจัดเรียงข้ อมูลจะเป็ น A - Z , a - z เนื่องจากค่ า ASCII ของ Z น้ อยกว่ า a

39
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวเลข
จากมากไปน้อย

รู ปแบบ void rsort(array array);

array ชื่อของอาร์ เรย์

40
Example: rsort()
$animal = array("bat", "ant", "cat");

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i];
echo "<br/>";
}
animal[0] = bat
animal[1] = ant
animal[2] = cat
41
Example: rsort()

$animal = array("bat", "ant", "cat");

rsort($animal); // sort descending

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i];
echo "<br/>"; animal[0] = cat
} animal[1] = bat
animal[2] = ant
42
Example: rsort()
$animal = array("bat", "ant", "Cat");

rsort($animal); // sort descending

for($i = 0; $i < count($animal); $i++){


echo "animal[" . $i . "] = ";
echo $animal[$i]; animal[0] = bat
echo "<br/>"; animal[1] = ant
} animal[2] = Cat

ในการจัดเรียงข้ อมูลจะเป็ น a - z, A - Z เนื่องจากค่ า ASCII ของ z มากกว่ า A

43
การเรี ยงลำดับอาร์เรย์ที่มีอินเด็กซ์เป็ นตัว
อักษร
การเรี ยงลำดับข้ อมูลของอาร์ เรย์ที่มีอินเด็กซ์เป็ นตัวอักษร 1 มิติประกอบด้ วย
 การเรี ยงลำดับจากน้ อยไปมาก
 เรี ยงลำดับตามค่าข้ อมูลที่จดั เก็บ: ฟั งก์ชนั asort()
 เรี ยงลำดับตามค่าอินเด็กซ์ของอาร์ เรย์: ฟั งก์ชนั ksort()
 การเรี ยงลำดับจากมากไปน้ อย
 เรี ยงลำดับตามค่าข้ อมูลที่จดั เก็บ: ฟั งก์ชนั arsort()
 เรี ยงลำดับตามค่าอินเด็กซ์ของอาร์ เรย์: ฟั งก์ชนั krsort()

44
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวอักษร
จากค่าข้อมูลที่จดั เก็บ น้อยไปมาก

รู ปแบบ void asort(array array);

array ชื่อของอาร์ เรย์

45
Example: asort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>";
}
money["dollar"] = 45
money["pound"] = 80
money["euro"] = 50
46
Example: asort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

asort($money); // sort ascending

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value; money["dollar"] = 45
echo "<br/>"; money["euro"] = 50
} money["pound"] = 80

ในการจัดเรียงข้ อมูลจะดูค่าทีจ่ ัดเก็บในอาร์ เรย์ เรียงลำดับจากน้ อยไปมาก

47
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวอักษรจากอินเด็กซ์ที่
จัดเก็บ น้อยไปมาก

รู ปแบบ void ksort(array array);

array ชื่อของอาร์ เรย์

48
Example: ksort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>";
}
money["dollar"] = 45
money["pound"] = 80
money["euro"] = 50
49
Example: ksort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

ksort($money); // sort ascending

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>"; money["dollar"] = 45
} money["euro"] = 50
money["pound"] = 80

ในการจัดเรียงข้ อมูลจะดูอนิ เด็กซ์ ทจี่ ัดเก็บในอาร์ เรย์ เรียงลำดับจากน้ อยไปมาก


50
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวอักษรจากค่าข้อมูลที่
จัดเก็บ มากไปน้อย

รู ปแบบ void arsort(array array);

array ชื่อของอาร์ เรย์

51
Example: arsort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>";
} money["dollar"] = 45
money["pound"] = 80
money["euro"] = 50
52
Example: arsort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

arsort($money); // sort ascending

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value; money["pound"] = 80
echo "<br/>"; money["euro"] = 50
}
money["dollar"] = 45
ในการจัดเรียงข้ อมูลจะดูค่าทีจ่ ัดเก็บในอาร์ เรย์ เรียงลำดับจากมากไปน้ อย

53
การเรี ยงลำดับข้อมูลที่มีอินเด็กซ์เป็ นตัวอักษร
จากอินเด็กซ์ที่จดั เก็บ มากไปน้อย
รู ปแบบ void krsort(array array);

array ชื่อของอาร์ เรย์

54
Example: krsort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>";
}
money["dollar"] = 45
money["pound"] = 80
money["euro"] = 50

55
Example: krsort()
$money = array("dollar"=>45, "pound"=>80, "euro"=> 50);

krsort($money); // sort ascending

foreach($money as $key => $value){


echo "money[\"" . $key . "\"] = ";
echo $value;
echo "<br/>"; money["pound"] = 80
} money["euro"] = 50
money["dollar"] = 45
ในการจัดเรียงข้ อมูลจะดูอนิ เด็กซ์ ทจี่ ัดเก็บในอาร์ เรย์ เรียงลำดับจากมากไปน้ อย
56

You might also like