อาเรย์
อาเรย์ (Array) คือประเภทข้อมูลที่เก็บข้อมูลเป็นชุดลำดับเรียงต่อกันในหน่วยความจำ อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา PHP ที่สามารถเก็บข้อมูลได้มากกว่าหนึ่งค่า อาเรย์ช่วยอำนวยความสะดวกในกรณีที่เราต้องการจัดการข้อมูลประเภทเดียวกันเป็นจำนวนมาก ยกตัวอย่างเช่น คุณต้องการเก็บคะแนนของนักเรียน 10 คน การใช้อาเรย์จึงเป็นสิ่งที่สะดวก
อาเรย์ในภาษา PHP นั้นสามารถเก็บข้อมูลได้ทุกประเภททั้ง Primitive type ออบเจ็คและ Resource อาเรย์สามารถมีได้หลายมิติหรือเราเรียกว่าอาเรย์ของอาเรย์ นอกจากนี้อาเรย์ยังมีฟังก์ชันอำนวยความสะดวกในการจัดการข้อมูลมากมายในภาษา PHP
ประกาศและใช้งานอาเรย์
ก่อนเริ่มใช้งานอาเรย์ เราจะให้คุณเห็นถึงความแตกต่างระหว่างการใช้งานอาเรย์และไม่ใช้สำหรับจัดการข้อมูลจำนวนมาก คุณมีตัวเลข 5 ตัวที่ต้องการเก็บในตัวแปรและนำตัวเลขเหล่านั้นมาคำนวณ
$number1 = 10;
$number2 = 20;
$number3 = 30;
$number4 = 40;
$number5 = 50;
คำตอบก็คือคุณต้องประกาศตัวแปร 5 ตัวสำหรับเก็บข้อมูลเหล่านี้ ในตอนนี้เราจะใช้อาเรย์สำหรับเก็บข้อมูลเหล่านี้แทน
$numbers = [10, 20, 30, 40, 50];
ในตัวอย่างข้างบน เราได้เปลี่ยนมาใช้อาเรย์สำหรับเก็บข้อมูลตัวเลขทั้ง 5 ตัวแทน ซึ่งการประกาศตัวแปรอาเรย์นั้นค่าจะล้อมด้วย []
และแต่ละค่าจะคั่นด้วยเครื่องหมายคอมมา ,
<?php
$numbers = [15, 28, 34, 49, 56, 82];
echo $numbers[0] . "\n";
$numbers[3] = 100;
echo $numbers[3] . "\n";
print_r($numbers);
?>
ในตัวอย่างเราได้ประกาศอาเรย์ $numbers
ซึ่งเก็บตัวเลข 6 ตัว เพื่อเข้าถึงค่าภายในตัวแปรอาเรย์เราเข้าถึงผ่าน Index ของมัน ซึ่ง Index ของอาเรย์ในภาษา PHP นั้นเริ่มจาก 0 ดังนั้นในตัวอย่างดังกล่าวคุณสามารถเข้าถึงข้อมูลในอาเรย์ได้จาก $numbers[0]
ถึง $numbers[5]
ซึ่งเป็นสมาชิกตัวแรกและตัวสุดท้ายในอาเรย์ตามลำดับ
echo $numbers[0] . "\n";
$numbers[3] = 100;
echo $numbers[3] . "\n";
เราได้แสดงผลข้อมูลในตำแหน่งแรกของอาเรย์ด้วย $numbers[0]
และเปลี่ยนค่าข้อมูลตำแหน่งที่ 4 เป็น 100 ใน $numbers[3]
และแสดงผลออกมา
print_r($numbers);
ฟังก์ชัน print_r()
ใช้สำหรับแสดงผลข้อมูลในอาเรย์ที่ประกอบไปด้วย Index และค่าภายในอาเรย์
15
100
Array
(
[0] => 15
[1] => 28
[2] => 34
[3] => 100
[4] => 56
[5] => 82
)
นี่เป็นผลลัพธ์ของโปรแกรมในการแสดงผลข้อมูลในอาเรย์
<?php
$names = ["Marius", "Perseus", "Zeus", "Poseidon"];
$mixed = [1, "PHP", "C#", 1.54, true];
$empty = [];
$days = ["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";
print_r($names);
print_r($mixed);
print_r($empty);
print_r($days);
print_r($planets);
?>
ต่อไปมาดูตัวอย่างการประกาศอาเรย์ในรูปแบบต่างๆ ที่ทำได้ในภาษา PHP
$names = ["Marius", "Perseus", "Zeus", "Poseidon"];
$mixed = [1, "PHP", "C#", 1.54, true];
$empty = [];
ในตัวอย่างเราได้ประกาศอาเรย์ $names
สำหรับเก็บข้อมูลประเภท String และในภาษา PHP อาเรย์สามารถเก็บข้อมูลที่ต่างประเภทกันในตัวแปรเดียวได้เหมือนตัวแปร $mixed
และในตัวแปร $empty
เป็นอาเรย์ว่างหรืออาเรย์ที่ไม่มีสมาชิกอยู่
$days = ["Sunday"];
array_push($days, "Monday");
array_push($days, "Tuesday");
$days[] = "Wednesday";
$days[] = "Thursday";
หลังจากที่ประกาศอาเรย์แล้ว คุณสามารถเพิ่มข้อมูลเข้ามาในภายหลังโดยใช้ฟังก์ชัน array_push()
หรือใช้การเพิ่มในรูปแบบของ $days[]
ซึ่ง Index ของอาเรย์จะเพิ่มขึ้นทีละ 1 จาก Index ล่าสุด
$planets[0] = "Mercury";
$planets[3] = "Mars";
$planets[4] = "Jupiter";
$planets[-1] = "Sun";
ในภาษา PHP เราสามารถกำหนดค่าให้กับอาเรย์สำหรับบาง Index ได้ และ Index ของอาเรย์สามารถเป็นค่าลบได้เช่นกัน
อาเรย์ Key value
ในภาษา PHP คุณสามารถประกาศอาเรย์ที่มี Index เป็นข้อมูลประเภทอื่นนอกจาก Integer ได้ ซึ่งเราเรียกว่า Key array มาดูตัวอย่างการประกาศและใช้งาน
<?php
$country["us"] = "United State";
$country["de"] = "German";
$country["uk"] = "Ukraine";
$country["sk"] = "Slovakia";
$country["th"] = "Thaiand";
print_r($country);
?>
ในตัวอย่างเป็นการประกาศอาเรย์ โดยเราใช้ String เป็น Key (Index) ของอาเรย์ ในการเข้าถึงข้อมูลของอาเรย์เราจะเข้าถึงจากคีย์ที่ได้กำหนดขึ้น เช่น $country["uk"]
เป็นการเข้าถึงค่าของ "Ukraine"
หรือใช้สำหรับการกำหนดค่าสำหรับ Key นี้
การใช้คำสั่ง For loop กับอาเรย์
เนื่องจากอาเรย์นั้นเก็บข้อมูลเป็นลำดับและมีการเข้าถึงผ่าน Index ดังนั้นคำสั่ง For loop กับอาเรย์จึงเป็นสิ่งที่จำเป็นในการเขียนโปรแกรม ซึ่งโดยทั่วไปแล้วในการเขียนโปรแกรม เรามักจะใช้คำสั่ง For loop กับอาเรย์เสมอ
<?php
$numbers = [];
for ($i = 0; $i < 10; $i++) {
$numbers[] = rand(1, 100);
}
echo "Random numbers: ";
for ($i = 0; $i < 10; $i++) {
echo $numbers[$i], ", ";
}
?>
ในตัวอย่างเป็นการใช้คำสั่ง For loop กับอาเรย์ ใน Loop แรกเราได้ทำการวนรอบการสุ่มตัวเลขระหว่าง 1 - 100 ด้วยฟังก์ชัน rand()
จำนวน 10 ตัวและใส่ในอาเรย์ $numbers
และใน For loop ที่สองเป็นการวนอ่านค่าภายในอาเรย์ เราใช้ตัวแปร $i
เป็น Index ในการเข้าถึงค่าภายในอาเรย์ $numbers[$i]
Random numbers: 7, 92, 39, 32, 75, 67, 23, 29, 8, 73,
นี่เป็นผลลัพธ์เมื่อรันโปรแกรม ตัวเลขนั้นได้จากการสุ่มซึ่งอาจจะแตกต่างกันในการรันแต่ละครั้ง
การใช้คำสั่ง Foreach loop กับอาเรย์
คำสั่ง Foreach loop ถูกออกแบบมาให้ใช้งานกับอาเรย์ มันใช้สำหรับวนอ่านค่าในอาเรย์โดยจะเริ่มจากสมาชิกตัวแรกจนถึงสมาชิกตัวสุดท้าย มาดูตัวอย่างการใช้งาน Foreach ในภาษา PHP
<?php
// foreach with normal array
$numbers = [10, 20, 30, 40, 50];
foreach ($numbers as $el) {
echo "$el\n";
}
// foreach with key value array
$country["us"] = "United State";
$country["de"] = "German";
$country["uk"] = "Ukraine";
$country["sk"] = "Slovakia";
foreach ($country as $key => $value) {
echo "$key = $value\n";
}
?>
ในตัวอย่างเป็นการใช้คำสั่ง Foreach ทั้งการอ่านค่าจากอาเรย์แบบปกติและแบบ Key value และแสดงผลออกทางหน้าจอ โดยคำสั่ง Foreach จะวนอ่านค่าภายในอาเรย์จนครบ ในแต่ละรอบของการทำงานสำหรับแบบปกติข้อมูลจะถูกเก็บในตัวแปร $el
และสำหรับแบบ Key value นั้นจะเก็บทั้ง Key และ Value ในตัวแปร $key
และ $value
ตามลำดับ
อาเรย์ 2 มิติ
ที่ผ่านมาเป็นการใช้งานอาเรย์หนึ่งมิติ ในภาษา PHP คุณสามารถสร้างอาเรย์หลายมิติได้ หรือเราเรียกว่าอาเรย์ของอาเรย์ ลองจินตนาการว่าคุณใส่อาเรย์ลงไปในอาเรย์ ซึ่งต่อไปนี้เราจะพูดเกี่ยวกับการประกาศและใช้งานอาเรย์ใน 2 มิติ
$two_dimension_array = [Array, Array, Array, ... ];
อาเรย์ 2 มิตินั้นอาจจะใช้กับงานที่หลากหลายและแตกต่างกันออกไป รูปแบบการเก็บข้อมูลของมันเหมือนตารางหรือเมทริกซ์ ซึ่งประกอบไปด้วยแถวและคอลัมน์ มาดูตัวอย่างการประกาศอาเรย์ 2 มิติในภาษา PHP
<?php
$number = [
[43, 23, 5, 43],
[13, 21, 63, 93],
[54, 65, 82, 27],
[8, 36, 73, 82],
];
print_r($number);
?>
ในตัวอย่าง เป็นการประกาศอาเรย์ 2 มิติ การในเข้าถึงข้อมูลของอาเรย์ เราเข้าถึงโดยใช้ Index สองตัว เช่น ต้องการเข้าถึงตัวเลข 21
ในแถวที่สอง จะเข้าถึงโดย $number[1][1]
และเข้าถึงตัวเลข 73
ในแถวสุดท้ายจะเป็น <code>$number[3][2]
เป็นต้น
<?php
$experience["name"] = ["Mateo", "Mark", "Thomas", "Danny"];
$experience["lang"] = ["C#", "PHP", "C++", "Java"];
$experience["year"] = [2, 5, 8, 10];
for ($i = 0; $i < 4; $i++ ) {
echo $experience["name"][$i], " has ";
echo $experience["year"][$i], " years experienced in ";
echo $experience["lang"][$i], ".\n";
}
?>
ตัวอย่างต่อมาเป็นการประยุกต์ใช้อาเรย์สองมิติแบบ Key และแบบปกติในการเก็บข้อมูล 3 อย่างของบุคล คือ ชื่อ จำนวนปี และภาษาโปรแกรม สำหรับมิติภายนอกหรือ Row และมิติภายในหรือ Column เป็นการเก็บข้อมูลของแต่ละคน และเราใช้คำสั่งสั่ง For loop ในการวนอ่านข้อมูล
Mateo has 2 years experienced in C#.
Mark has 5 years experienced in PHP.
Thomas has 8 years experienced in C++.
Danny has 10 years experienced in Java.
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
ในภาษา PHP เพราะว่าอาเรย์นันมีการทำงานในรูปแบบของอาเรย์ ดังนั้นอาเรย์ในอาเรย์สามารถมีขนาดที่แตกต่างกันได้ ดังในตัวอย่าง
<?php
$numbers = [
[10, 50],
[43, 7, 5],
[10],
[20, 20],
[80, 30, 100, 120]
];
for ($i = 0; $i < count($numbers); $i++) {
$sum = 0;
echo "Sum of ";
for ($j = 0; $j < count($numbers[$i]); $j++) {
$sum += $numbers[$i][$j];
echo $numbers[$i][$j] . " ";
}
echo "= $sum\n";
}
?>
ในตัวอย่างเป็นการประกาศอาเรย์ 2 มิติในขนาดที่ไม่เท่ากัน และเราใช้คำสั่ง For loop ในการอ่านค่าภายในอาเรย์ เพื่อหาขนาดของจำนวนแถวของอาเรย์จะใช้คำสั่ง count($numbers)
และขนาดของคอลัมน์ในแต่ละแถวจะใช้คำสั่ง count($numbers[$i])
เพื่อเข้าถึงข้อมูลในอาเรย์เราใช้คำสั่ง $numbers[$i][$j]
ที่สอดคล้องไปกับการวนของคำสั่ง Loop
Sum of 10 50 = 60
Sum of 43 7 5 = 55
Sum of 10 = 10
Sum of 20 20 = 40
Sum of 80 30 100 120 = 330
นี่เป็นผลลัพธ์ของโปรแกรมที่แสดงข้อมูลและผลรวมของแต่ละแถว
อาเรย์ 3 มิติและหลายมิติ
นอกจากนี้คุณยังสามารถสร้างอาเรย์ที่มากกว่า 2 มิติได้ เช่น การสร้างอาเรย์ 3 มิติ คุณก็ใส่อาเรย์ 2 มิติลงไปในอาเรย์ 3 มิติเป็นต้น แต่โดยส่วนมากแล้วในการเขียนโปรแกรม เราใช้มากสุดเพียงแค่ 3 มิติ
<?php
$two_dimension_array = [Array, Array, ...];
$three_dimension_array = [$two_dimension_array, $two_dimension_array, ... ];
...
?>
นี่เป็นตัวอย่างของรูปแบบของอาเรย์หลายมิติในภาษา PHP
<?php
$point = [
[
[1, 4],
[2, 3],
[5, 1],
],
[
[3, 5],
[-1, 2],
[-1, 2],
],
[
[0, 4],
[-2, 5],
[-3, 3],
[5, 2],
],
];
for ($i = 0; $i < count($cities); $i++) {
echo "Country ", $i + 1, "\n";
for ($j = 0; $j < count($cities[$i]); $j++) {
echo "City " , $j + 1, " (";
echo $cities[$i][$j][0] , ", ";
echo $cities[$i][$j][1] , ")\n";
}
}
?>
ในตัวอย่างเป็นการประกาศและใช้งานอาเรย์ 3 มิติในภาษา PHP เรามีตัวแปรอาเรย์ $point
สำหรับเก็บพิกัดของเมื่องของแต่ละประกาศ อาเรย์มิตินอกสุดหายถึงประเทศ $point[country]
และถัดมาหมายถึงเมื่องในประเทศนั้นๆ $point[country][city]
และข้างในสุดเป็นพิกัด x และ y ซึ่งก็คือ $point[country][city][0]
และ $point[country][city][1]
ตามลำดับ
Country 1
City 1 (1, 4)
City 2 (2, 3)
City 3 (5, 1)
Country 2
City 1 (3, 5)
City 2 (-1, 2)
City 3 (-1, 2)
Country 3
City 1 (0, 4)
City 2 (-2, 5)
City 3 (-3, 3)
City 4 (5, 2)
นี่เป็นการผลลัพธ์เมื่อรันโปรแกรม ซึ่งเป็นการแสดงเมืองและพิกัดของแต่ละประเทศที่เราได้เก็บไว้ในอาเรย์ 3 มิติ
ในการเขียนโปรแกรม คุณสามารถนำอาเรย์ไปประยุกต์ใช้ในรูปแบบต่างๆ ได้มากมาย ซึ่งอาเรย์เป็นสิ่งที่มีประโยชน์และสำคัญในการเขียนโปรแกรม สำหรับในบทนี้ทั้งหมดเป็นพื้นฐานที่คุณจะต้องทราบเกี่ยวกับอาเรย์
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการประกาศและการใช้งานอาเรย์ อาเรย์ 2 มิติและอาเรย์ 3 มิติในภาษา PHP ในบทต่อไปคุณจะได้รู้จักกับฟังก์ชันที่จำเป็นเกี่ยวกับอาเรย์