PHP

PHP KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

PHP:n tietotyypit: taulukot (array)

PHP:n taulukko (array) on tietorakenne, joka tallentaa joukon arvoja yhteen muuttujaan. Jokaisella arvolla on yksilöllinen numeerinen indeksi tai nk. tekstiavain, jonka avulla arvoon pääsee käsiksi. Taulukoita käytetään, kun halutaan säilyttää ja käsitellä useita tietoja järjestyksessä tai ryhmissä - esimerkiksi tietokantakyselyjen tulosjoukot palautetaan usein taulukkomuotoisena.

Taulukko voidaan luoda joko käyttämällä funktiota array() tai määrittelemällä muuttuja taulukoksi sijoittamalla arvo hakasulkeiden ([]) sisään. Kuten useimmissa muissakin ohjelmointikielissä, myös PHP:ssä taulukon perusindeksi on 0.

Taulukkotyyppistä dataa sisältävä muuttuja tulisi nimetä arr-alkuliitteellä. Esimerkiksi:


<?php
    $arrHedelmät = ["omena", "banaani", "kirsikka"];
    $arrHedelmät2 = array("kiiwi", "mansikka", "luumu");
?>


Yksiulotteiset taulukot

Indeksoitu taulukko

Nimensä mukaisesti indeksoitu taulukko perustuu siihen, että taulukon jokaisella jäsenellä on numeerinen indeksi. Esimerkiksi:


<?php
    $arrHedelmat = ["omena", "banaani", "kirsikka"];
	
    echo $arrHedelmat[1]; // tulostaa banaani
?>


Saman koodin olisi voinut kirjoittaa myös seuraavalla tavalla:


<?php
    $arrHedelmat[0] = "omena";
    $arrHedelmat[1] = "banaani";
    $arrHedelmat[2] = "kirsikka";	
	
    echo $arrHedelmat[1]; // tulostaa banaani
?>


Kun taulukkomuuttujaan lisätään arvo käyttäen tyhjiä hakasulkeita, arvo lisätään taulukon loppuun:


<?php
    $arrHedelmat = ["omena", "banaani", "kirsikka"];
    $arrHedelmat[] = "appelsiini";
	
    echo $arrHedelmat[3]; // appelsiini

?>


PHP tallentaa ainoastaan indeksit, jotka erikseen määrätään. Alla olevassa esimerkissä PHP luo ainoastaan indeksit 0,1,2,3 ja 999:


<?php
    $arrHedelmat = ["omena", "banaani", "kirsikka"];
    $arrHedelmat[999] = "appelsiini";
	
    echo $arrHedelmat[999]; // appelsiini

?>


Assosiatiivinen taulukko

PHP:ssä taulukko voidaan muodostaa myös nk. avain-arvo pareilla. Tällöin puhutaan assosiatiivisesta taulukosta tai hashtablesta:


<?php
    $arrHedelmat = [
      "a" => "Omena",
      "b" => "Banaani",
      "c" => "Kirsikka"
    ];

    echo $arrHedelmat["b"]; // Tulostaa: Banaani
?>


Tietokantakyselyiden tuloksia käsitellessä tulosjoukko halutaan palauttaa usein assosiatiivisena taulukkona. Tämä helpottaa tietokannan rakenteen hahmottamista:


<?php
$conn = new mysqli("localhost", "username", "password", "database");

if ($conn->connect_error) {
    die("Yhteys epäonnistui: " . $conn->connect_error);
}

$sql = "SELECT id, nimi, hinta FROM tuotteet";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    // nouda tulosjoukko taulukkona
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . "\n";
        echo "Nimi: " . $row["nimi"] . "\n";
        echo "Hinta: " . $row["hinta"] . "\n\n";
    }
} else {
    echo "Ei tuloksia.";
}

$conn->close();
?>


Moniulotteiset taulukot

Moniulotteinen taulukko tarkoittaa taulukkoa, jonka alkio on toinen taulukko - eli taulukko taulukon sisällä. Moniulotteinen taulukko luodaan lisäämällä taulukkomäärittelyn perään toinen []-merkintä. Esimerkiksi:


<?php
$arrHedelmaPeli = [
    "hedelmat" => ["a" => "Omena", "b" => "Banaani", "c" => "Vattu"],
    "voitot"   => [1, 2, 3, 4, 5, 6]
];

echo $arrHedelmaPeli["hedelmat"]["b"]; // Tulostaa: Banaani
?>



Superglobaalit taulukkomuuttujat

PHP:ssa erilaiset ympäristömuuttujat kuten evästeet, lomake- ja URL-data tallentuvat nk. superglobaaleihin taulukkomuuttujiin. Superglobaali tarkoittaa sitä, että nämä muuttujat ovat kutsuttavissa kaikissa tilanteissa. Ja koska ne ovat taulukoita voi niiden alkioita aksessoida samalla tavoin tavallisia assosatiivisia taulukoita. Alla olevassa esimerkissä REQUEST_METHOD on superglobaalin taulukkomuuttujan $_SERVER avain.


<?php
    // tarkistetaan onko sivunlataus POST-menetelmällä tehty
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // Tämä koodi suoritetaan vain jos pyyntö on POST
        echo "Sivu ladattiin POST-pyynnöllä!";
    }
?>


Taulukossa liikkuminen

Taulukon sisältämien arvojen määrän saat palautettua count()-funktion avulla.


<?php
    $arrHedelmat = ["omena", "banaani", "kirsikka"];
	echo count($arrHedelmat);  // 3

?>


Taulukon läpikäyminen onnistuu helposti silmukkaohjausrakenteilla. Alla olevassa esimerkissä hyödynnetään for-silmukkaa yhdessä count()-funktion kanssa


<?php
    $arrHedelmat = ['omena', 'banaani', 'appelsiini'];
	$iAlkiot = count($arrHedelmat);

    for ($i = 0; $i < $iAlkiot; $i++) {
        echo $arrHedelmat[$i] . "\n";
    }

?>


Vaihtoehtoisesti taulukon sisällön olisi voinut iteroida myös foreach()-rakenteen avulla:


<?php
    // käsitellään lomakedata
    $sViesti = "";
    foreach ($_POST as $avain => $arvo) {
        $sViesti .= "$avain: $arvo\n";
    }

    // lähetetään lomake eteenpäin
    mail("sales@2kmediat.com","Yhteydenotto",$sViesti);
?>


Taulukon lajittelu

Taulukossa oleva data voidaan lajitella käyttämällä hyväksi jotain seuraavista funktioista: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() ja uksort(). PHP:n oma dokumentaatio tarjoaa lisätietoa eri menetelmien eroista taulukoiden lajittelussa.



<?php
     $arrHedelmat = ["banaani", "omena", "kirsikka"];
     sort($arrHedelmat);

     print_r($arrHedelmat);   // banaani, kirsikka, omena
?>