You are on page 1of 32

Web Programming

WEB DESIGN
Chapter 7
Array & Array Function

C# and Java Certificate. Power By Tananon Klinkaew


Array

อาเรย (Array) คือประเภทขอมูลที่เก็บขอมูลเปนชุดลําดับเรียงต'อ


กั น ในหน' ว ยความจํ า อาเรยเปนตั ว แปรประเภทหนึ่ ง ในภาษา PHP ที่
สามารถเก็บขอมูลไดมากกว'าหนึ่งค'า อาเรยช'วยอํานวยความสะดวกใน
กรณี ที่ เ ราตองการจั ด การขอมู ล ประเภทเดี ย วกั น เปนจํ า นวนมาก
ยกตัวอย'างเช'น ตองการเก็บคะแนนของนักเรียน 10 คน การใชอาเรยจึง
เปนสิ่งที่สะดวก
อาเรยในภาษา PHP นั้นสามารถเก็บขอมูลไดทุกประเภททั้ ง
Primitive type ออบเจ็คและ Resource อาเรยสามารถมีไดหลายมิติหรือ
เราเรียกว'าอาเรยของอาเรย นอกจากนี้อาเรยยังมีฟEงกชันอํานวยความ
สะดวกในการจัดการขอมูลมากมายในภาษา PHP

C# and Java Certificate. Power By Tananon Klinkaew


ประกาศและใชงานอาเรย&
ก'อนเริ่มใชงานอาเรย จะใหเห็นถึงความแตกต'างระหว'างการใช
งานอาเรยและไม'ใชสําหรับจัดการขอมูลจํานวนมาก สมมุติว'า มีตัวเลข 5
ตัวที่ตองการเก็บในตัวแปรและนําตัวเลขเหล'านั้นมาคํานวณ
$number1 = 10; คําตอบก็คือจะตองประกาศตัวแปร
$number2 = 20; 5 ตัวสําหรับเก็บขอมูลเหล'านี้ ในตอนนี้จะ
$number3 = 30; ใชอาเรยสําหรับเก็บขอมูลเหล'านี้แทน
$number4 = 40;
$number5 = 50; $numbers = array(10, 20, 30, 40, 50);

ไดเปลี่ยนมาใชอาเรยสําหรับเก็บขอมูลตัวเลขทั้ง 5 ตัวแทน ซึ่งการ


ประกาศตั ว แปรอาเรยนั้ น ค' า จะลอมดวย [] และแต' ล ะค' า จะคั่ น ดวย
เครื่องหมายคอมมา ,

C# and Java Certificate. Power By Tananon Klinkaew


ประกาศและใชงานอาเรย&(ต8อ)
ในตัวอย'างไดประกาศอาเรย $numbers ซึ่งเก็บตัวเลข 6 ตัว เพื่อ
เขาถึงค'าภายในตัวแปรอาเรย ซึ่งจะเขาถึงผ'าน Index ซึ่ง Index ของอาเรย
ในภาษา PHP นั้นเริ่มจาก 0 ดังนั้นในตัวอย'างดังกล'าวสามารถเขาถึงขอมูล
ในอาเรยไดจาก $numbers[0] ถึง $numbers[5] ซึ่งเปนสมาชิกตัวแรกและ
ตัวสุดทายในอาเรยตามลําดับ
ฟ: ง ก& ชั น print_r( )
<?php
$numbers = array(15, 28, 34, 49, 56, 82);
ใชสําหรับแสดงผลขอมูลใน
echo $numbers[0] . "\n"; อาเรย& ที่ ป ระกอบไปด วย
$numbers[3] = 100; Index และค8าภายในอาเรย&
echo $numbers[3] . "\n";
print_r($numbers);
?>

C# and Java Certificate. Power By Tananon Klinkaew


ประกาศและใชงานอาเรย&(ต8อ)
<?php
Ex.
$names =array ("No 1.", "No 2.", "No 3.", "No
4.");
$mixed = array(1, "PHP", "C#", 1.54, true);
$empty = array();
$days =array ("Sunday");
array_push($days, "Monday");
array_push($days, "Tuesday");
$days[] = "Wednesday";
$days[] = "Thursday";
$planets[0] = "Mercury";
$planets[3] = "Mars";
$planets[4] = "Jupiter";
$planets[-1] = "Sun";Power By Tananon Klinkaew
C# and Java Certificate.
ประกาศและใชงานอาเรย&(ต8อ)
Ex.(ต8อ)

print_r($names); ผลลัพธ&
echo "<br>"; Array ( [0] => No 1. [1] => No 2. [2] => No 3. [3] => No 4. )
print_r($mixed); Array ( [0] => 1 [1] => PHP [2] => C# [3] => 1.54 [4] => 1 )
Array ( )
echo "<br>"; Array ( [0] => Sunday [1] => Monday [2] => Tuesday [3] =>
Wednesday [4] => Thursday )
print_r($empty); Array ( [0] => Mercury [3] => Mars [4] => Jupiter [-1] => Sun )
echo "<br>";
print_r($days);
echo "<br>";
print_r($planets);
?>

C# and Java Certificate. Power By Tananon Klinkaew


อธิบายเพิ่มเติม

$names =array ("No 1.", "No 2.", "No 3.", "No 4.");
$mixed = array(1, "PHP", "C#", 1.54, true);
$empty = array();

ในตัวอย'างไดประกาศอาเรย $names สําหรับเก็บขอมูลประเภท


String และในภาษา PHP อาเรยสามารถเก็บขอมูลที่ต8างประเภทกันใน
ตัวแปรเดียวไดเหมือนตัวแปร $mixed และในตัวแปร $empty เปน
อาเรยว'างหรืออาเรยที่ไม'มีสมาชิกอยู'

C# and Java Certificate. Power By Tananon Klinkaew


อธิบายเพิ่มเติม(ต8อ)

$days =array ("Sunday"); $planets[0] = "Mercury";


array_push($days, "Monday"); $planets[3] = "Mars";
array_push($days, "Tuesday"); $planets[4] = "Jupiter";
$days[] = "Wednesday"; $planets[-1] = "Sun";
$days[] = "Thursday";
ในภาษา PHP สามารถกําหนดค'า
หลั ง จากที่ ป ระกาศอาเรย ใหกั บ อาเรยสํ า หรั บ บาง Index
แลว สามารถเพิ่ ม ขอมู ล เขามาใน ไ ด แ ล ะ Index ข อ ง อ า เ ร ย&
ภายหลังโดยใชฟEงกชัน array_push() สามารถเปTนค8าลบไดเช8นกัน
ห รื อ ใ ช ก า ร เ พิ่ ม ใ น รู ป แ บ บ ข อ ง
$days[] ซึ่ ง Index ของอาเรยจะ
เพิ่มขึ้นทีละ 1 จาก Index ล'าสุด

C# and Java Certificate. Power By Tananon Klinkaew


อาเรย& Key value

ในภาษา PHP สามารถประกาศอาเรยที่ มี Index เปนขอมู ล


ประเภทอื่ น นอกจาก Integer ได ซึ่ ง เราเรี ย กว' า Key array มาดู
ตัวอย'างการประกาศและใชงาน
<?php ในตัวอย'างเปนการประกาศอาเรย โดย
$country["us"] = "United State"; เราใช String เปน Key (Index) ของ
$country[“ge"] = "German"; อาเรย ในการเขาถึ ง ขอมู ล ของอาเรย
เราจะเขาถึงจากคียที่ไดกําหนดขึ้น เช'น
$country["uk"] = "Ukraine";
$country["uk"] เปนการเขาถึ ง ค' า ของ
$country["sk"] = "Slovakia"; "Ukraine" หรือใชสําหรับการกําหนดค'า
$country["th"] = "Thailand"; สําหรับ Key นี้
print_r($country);
?>

C# and Java Certificate. Power By Tananon Klinkaew


การใชคําสั่ง For loop กับอาเรย&
เนื่ องจากอาเรยนั้ น เก็ บขอมูล เปนลํ าดั บ และมี ก ารเขาถึ งผ' า น
Index ดังนั้นคําสั่ง For loop กับอาเรยจึงเปนสิ่งที่จําเปนในการเขียน
โปรแกรม ซึ่งโดยทั่วไปแลวในการเขีย นโปรแกรม มั กจะใชคําสั่ ง For
loop กับอาเรยเสมอ ตัวอย8าง เปนการใชคําสั่ง For
<?php loop กับอาเรย ใน Loop แรก
เราไดทํ า การวนรอบการสุ' ม
$numbers = array();
ตั ว เลขระหว' า ง 1 - 100 ดวย
for ($i = 0; $i < 10; $i++) { ฟEงกชัน rand() จํานวน 10 ตัว
$numbers[] = rand(1, 100); และใส' ใ นอาเรย $numbers
} และใน For loop ที่สองเปนกา
echo "Random numbers: "; รวนอ' า นค' า ภายในอาเรย เรา
for ($i = 0; $i < 10; $i++) { ใชตั ว แปร $i เปน Index ใน
echo $numbers[$i], ", "; การเขาถึ ง ค' า ภายในอาเรย
} $numbers[$i]
?>
C# and Java Certificate. Power By Tananon Klinkaew
การใชคําสั่ง Foreach loop กับอาเรย&

คํ า สั่ ง Foreach loop ถู ก ออกแบบมาใหใชงานกั บ อาเรย ซึ่ ง ใช


สําหรั บวนอ'านค'าในอาเรยโดยจะเริ่มจากสมาชิก ตัวแรกจนถึง สมาชิกตั ว
สุดทาย มาดูตัวอย'างการใชงาน Foreach ในภาษา PHP
Ex. foreach with normal array ผลลัพธ&

<?php
// foreach with normal array
$numbers = array(10, 20, 30, 40, 50);
foreach ($numbers as $el) {
echo "$el <br>";
}
?>

C# and Java Certificate. Power By Tananon Klinkaew


การใชคําสั่ง Foreach loop กับอาเรย& (ต8อ)

ผลลัพธ&
Ex. foreach with key value array
<?php
// foreach with key value array
$country["us"] = "United State";
$country[“ge"] = "German"; ในตั ว อย' า งเปนการใชคํ า สั่ ง Foreach ทั้ ง
การอ' า นค' า จากอาเรยแบบปกติ แ ละแบบ
$country["uk"] = "Ukraine"; Key value และแสดงผลออกทางหนาจอ
$country["sk"] = "Slovakia"; โดยคํ า สั่ ง Foreach จะวนอ' า นค' า ภายใน
foreach ($country as $key => $value) อาเรยจนครบ ในแต'ละรอบของการทํางาน
สําหรับแบบปกติขอมูลจะถูกเก็บในตัวแปร
{ $el และสําหรับแบบ Key value นั้นจะเก็บ
echo "$key = $value <br>"; ทั้ง Key และ Value ในตัวแปร $key และ
$value ตามลําดับ
}
?>
C# and Java Certificate. Power By Tananon Klinkaew
อาเรย& 2 มิติ

ที่ผ'านมาเปนการใชงานอาเรยหนึ่งมิติ ในภาษา PHP สามารถสราง


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

C# and Java Certificate. Power By Tananon Klinkaew


อาเรย& 2 มิติ(ต8อ)
ผลลัพธ&
<?php
$number =array
(
array(43, 23, 5, 43),
array(13, 21, 63, 93)
);
echo $number[0][1]."<br>";
echo $number[1][2]."<br>";
echo $number[1][1]."<br>";
?>

C# and Java Certificate. Power By Tananon Klinkaew


อาเรย&ฟ:งก&ชัน

ในภาษา PHP มี ฟE ง กชั น อํ า นวยความสะดวกในการจั ด การ


อาเรย ฟEงกชันเหล'านี้เปน Built-in function พื้นฐานที่จําเปนในการ
เขียนโปรแกรม มีฟEงกชันเกี่ยวกับอาเรยเปนจํานวนมาก ที่สามารถ
ใชไดในภาษา PHP เช'น ฟEงกชันในการคนหาขอมูล การจัดเรียง การ
ค'า หามากสุ ด การหาค' า นอยสุ ด ในบทนี้ จ ะเปนตั ว อย' า งการใชงาน
ฟEงกชันที่สําคัญกับอาเรย

C# and Java Certificate. Power By Tananon Klinkaew


การเรียงขอมูลในอาเรย&(Sorting)

ในภาษา PHP มีฟEงกชันอํานวยความสะดวกในการจัดเรียงขอมูล


คือฟEงกชัน sort() ซึ่งเปนฟEงกชันสําหรับเรียงขอมูลจากนอยไปมาก และ
สามารถใชไดกับขอมูลทุกประเภทและอาเรยทุกแบบ มาดูตัวอย'างการ
เรียงขอมูลในอาเรยในภาษา PHP

C# and Java Certificate. Power By Tananon Klinkaew


การเรียงขอมูลในอาเรย&(Sorting)(ต8อ)
Ex.
Ex.(ต่อ)
<?php // Descending sort
$NUMM =array("A", "B", "C", "D", "E"); rsort($NUMM);
echo "Unsorted:"."<br>";
foreach ($NUMM as $el) { echo "Sorted desc:\n";
echo "$el "; foreach ($NUMM as $el) {
} echo "$el ";
echo "<br>"; }
// Ascending sort echo "<br>";
sort($NUMM); ?>
echo "Sorted asc:\n"; ผลลัพธ&
foreach ($NUMM as $el) {
echo "$el ";
}
echo "<br>";Java Certificate.
C# and Power By Tananon Klinkaew
การเรียงขอมูลในอาเรย&(Sorting)(ต8อ)

Ascending sort VS Descending sort


• ฟEงกชัน sort() เพื่อเรียงขอมูลในอาเรย&นอยไปมาก เมื่อฟEงกชันนี้ถูก
ใชกั บ ขอมู ล ที่ เ ปนตั ว อั ก ษรจะเรี ย งตามลํ า ดั บ ตั ว อั ก ษรแทน การ
ทํางานของฟEงกชันนี้เปนแบบการส'งค'าแบบ Pass by reference
ลําดับของอาเรย&เดิมจะหายไปหลังจากเรียกใชงาน
• ฟEงกชัน rsort() เปนฟEงกชัน ในการเรี ยงขอมู ลจากมากไปนอย
ซึ่งลําดับของขอมูลในอาเรยจะตรงกันขามกับการฟEงกชัน sort()

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันจัดการลําดับในอาเรย&
ฟE ง กชั น สํ า หรั บ การเรี ย งขอมู ล ในอาเรยแลว ภาษา PHP
ยังมีฟEงกชันในการเรียงลําดับอาเรยในอีกรูปแบบคือ การเรียงกลับ
และการสุ8มตําแหน8งของอาเรย&
<?php echo "<br>";
$planets = array("A", "B", "C", "D", shuffle($planets);
"E", "F", "G", "H"); foreach ($planets as $el) {
foreach ($planets as $el) { echo "$el ";
echo "$el "; }
} ?>
echo "<br>";
$reverse = array_reverse($planets); ผลลัพธ&
foreach ($reverse as $el) {
echo "$el ";
}
C# and Java Certificate. Power By Tananon Klinkaew
ฟ:งก&ชันจัดการลําดับในอาเรย&(ต8อ)

array_reverse() VS shuffle()

• ฟEงกชัน array_reverse() เปนฟEงกชันในการเรียงลําดับของอาเรย


ในลําดับที่ตรงกันขามกับอาเรย&เดิม ผลลัพธที่ไดเปนอาเรย&ใหม8ที่
มีลําดับกลับกัน
• ฟEงกชัน shuffle() เปนฟEงกชันสําหรับสุ8มตําแหน8งในอาเรย&ใหม8

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันนับและหาผลรวมของอาเรย&

ในภาษา PHP มีฟEงกชันสําหรับนับจํานวนสมาชิกภายในอาเรย หา


ผลรวมของการบวกและการคูณของตัวเลขในอาเรย
<?php
$numbers =array( 5, 2, 10, 3, 9, 4, 1, 6);
echo "There are " . count($numbers) . " numbers in the array.<br>";
echo "Sum of the array is " . array_sum($numbers) . ".<br>";
echo "Product of the array is " . array_product($numbers) . ".<br>";
?>
ผลลัพธ&

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันนับและหาผลรวมของอาเรย&(ต8อ)

count() VS array_sum() VS array_product()


• ฟEงกชัน count() เปนฟEงกชันสําหรับนับจํานวนสมาชิกภายในอาเรย&
• ฟEงกชัน array_sum() เปนฟEงกชันสําหรับหาผลรวมของตัวเลขใน
อาเรย และฟEงกชัน
• array_product() เปนฟEงกชันสําหรับหาผลรวมการคูณของตัวเลข
ในอาเรย

C# and Java Certificate. Power By Tananon Klinkaew


คนหาขอมูลในอาเรย& ฟ:งก&ชัน in_array()
การคนหาขอมูลในอาเรยนั้นคุณสามารถใชฟEงกชัน in_array() เพื่อ
ตรวจสอบว'าค'านี้มีอยู'ในอาเรยหรือไม' โดยฟEงกชันจะส'งค'ากลับเปน true
ถาหากพบ และ false ถาหากไม'พบ
<?php $find = "F";
$names = array("A", "B", "C", "D"); if (in_array($find, $names)) {
$find = "C"; echo "$find is in the array.<br>";
if (in_array($find, $names)) { }
echo "$find is in the array.<br>"; else {
} echo "$find is not in the array.<br>";
else { }
echo "$find is not in the array.<br>"; ?>
}

ผลลัพธ&
C# and Java Certificate. Power By Tananon Klinkaew
ฟ:งก&ชันคนหาและสุ8มขอมูลจากอาเรย&
ต'อไปเปนฟEงกชันคนหาขอมูลในอาเรยอีกรูปแบบหนึ่ง คือฟEงกชัน
array_search() สําหรับคนหาขอมูลในอาเรย ถาพบจะส'งค'า Index หรือ
Key กลับมา ถาไม'พบส'งเปนค'า false แทน
<?php
$names = array("A", "B", "C", "D");
$index = array_search("C", $names);
echo "C is found at index = $index <br>";
$random_index = array_rand($names);
echo $names[$random_index] . " is chose.<br>";
?>

ผลลัพธ&

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันคนหาและสุ8มขอมูลจากอาเรย&(ต8อ)

array_search() VS array_rand()

• array_search() ใชสําหรับคนหาค'าในอาเรย
• ฟEงกชัน array_rand() เปนการสุ'มเอา Index หรือ Keys ของ
อาเรยตั้งแต' 1 หรือหลายค'าจากอาเรยที่กําหนด

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันหาค8าที่ไม8ซ้ํากันในอาเรย&
<?php ผลลัพธ&
$chars = array("A", "B", "A", "C", "C", "D", "D", "D");
$unique = array_unique($chars);
$count_value = array_count_values($chars);
echo "Unique:<br>";
print_r($unique);
echo "<br>Count value:<br>";
print_r($count_value);
?>

ฟEงกชัน array_unique() สําหรับหาค'าที่ไม'ซ้ํากันในอาเรย ผลลัพธทีไดจะเปนอาเรย


ใหม'ที่มีค'าไม'ซ้ํากัน และฟEงกชัน array_count_values() เปนฟEงกชันสําหรับนับจํานวน
สมาชิกที่ซ้ํากันในอาเรย ผลลัพธที่ไดจะเปนอาเรย Key value ที่มีคียเปนค'าของขอมูล
และมีค'าเปนจํานวนที่พบในอาเรยตนฉบับ

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชัน range() สรางอาเรย&ลําดับของตัวเลข

ฟEงกชัน range() เปนฟEงกชันสําหรับสรางอาเรยของตัวเลขแบบเรียงลําดับกัน โดยมีการ


เพิ่มขึ้นหรือลดลงในค'าที่คงที่ ยกตัวอย'างเช'น ตองการสรางอาเรยของตัวเลข 1 - 10
<?php
$number1 = range(1, 10);
echo "number1: ", implode(" ", $number1), "<br>";
$number2 = range(1, 10, 2);
echo "number2: ",implode(" ", $number2), "<br>";
$number3 = range(0, 1, 0.2);
echo "number3: ",implode(" ", $number3), "<br>";

$number4 = range(10, -5, -1);


echo "number4: ",implode(" ", $number4), "<br>";
$alphabets = range('A', 'Z', 1);
echo "alphabets: ",implode(" ", $alphabets), "<br>";
?>
C# and Java Certificate. Power By Tananon Klinkaew
ฟ:งก&ชัน range() สรางอาเรย&ลําดับของตัวเลข
ผลลัพธ&

การสรางอาเรยโดยการใชฟEงกชัน range() โดยที่อากิวเมนตตัวแรกเปนค'าเริ่มตนของ


ค'าในอาเรย ตัวที่สองเปนค'าสุดทาย และอากิวเมนตตัวทีส่ ามนั้นเปน Default
argument เปนค'าอัพเดทลําดับของตัวเลข โดยปกติแลวจะมีค'าเปน 1

ฟEงกชัน implode() ในนําขอมูลในอาเรยมาสรางเปน String ที่คันดวย Space " " ซึ่งมัน


ง'ายกว'าก'อนหนาที่ใชคําสั่ง foreach ในการวนอ'านค'าในอาเรยเพื่อแสดงผล

C# and Java Certificate. Power By Tananon Klinkaew


ฟ:งก&ชันเพิ่มและลบสมาชิกในอาเรย&
สามารถเพิ่ ม และนํ า ขอมู ล ออกจากอาเรยดวยฟE ง กชั น array_push()
array_pop() array_unshift() และ array_shift() ซึ่งมีการทํางานดังนี้
<?php ผลลัพธ&
$numbers = array(1, 3, 5, 7, 8);
array_push($numbers, 10);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "<br>";
array_pop($numbers);
foreach ($numbers as $el) {
echo "$el, ";
}
?>
C# and Java Certificate. Power By Tananon Klinkaew
ฟ:งก&ชันเพิ่มและลบสมาชิกในอาเรย&
<?php ผลลัพธ&
array_unshift($numbers, -1);
foreach ($numbers as $el) {
echo "$el, ";
}
echo "<br>";
array_shift($numbers);
foreach ($numbers as $el) {
echo "$el, ";
}?>

C# and Java Certificate. Power By Tananon Klinkaew


Reference
• ฟEงกชัน array_push() ใชสําหรับเพิ่มขอมูลลงไปในตําแหน'งสุดทาย
ของอาเรย
• ฟEงกชัน array_pop() เปนฟEงกชันสําหรับนําออกค'าสุดทายใน
อาเรยและส'งค'าดังกล'าวกลับมา
ฟEงกชัน array_push() และ array_pop() นั้นเปนฟEงกชันที่มี
การทํางานในรูปแบบของ Stack

• ฟEงกชัน array_unshift() เปนฟEงกชันสําหรับเพิ่มขอมูลไปยัง


ตําแหน'งแรกของอาเรย
• ฟEงกชัน array_push() เพิ่มไปยังตําแหน'งสุดทาย
• array_shift() เปนฟEงกชันสําหรับนําขอมูลในตําแหน'งแรกออกจาก
อาเรยและส'งค'าดังกล'างกลับมา
C# and Java Certificate. Power By Tananon Klinkaew
Reference
• http://www.thaicreate.com/php/php.html
• http://marcuscode.com/lang/php/introduction
• http://marcuscode.com/lang/php/program-struct
• http://www.thaicreate.com/php-
manual/language.basic-syntax.comments.html
• http://www.mwit.ac.th/~jeab/40201/ch4.php
• https://www.programmerthailand.com/tutorial
• http://marcuscode.com/lang/php
• https://whitebear-sw.com

C# and Java Certificate. Power By Tananon Klinkaew

You might also like