อาเรย์

24 December 2016

อาเรย์ (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 ในบทต่อไปคุณจะได้รู้จักกับฟังก์ชันที่จำเป็นเกี่ยวกับอาเรย์

บทความนี้เป็นประโยชน์หรือไม่? Yes · No