AGNIESZKA LEŚKÓW

Tablice (z ang. Arrays) w PHP

KOMPENDIUM

Tablice (z ang. Arrays) w PHP

Sposoby zapisu

<?php

       $arr = Array();
       $arr = array();
       $arr = [];

?>

Sposoby wyświetlania

<?php

       var_dump($arr);
       print_r($arr);

?>

Tablice jednowymiarowe bez przypisanego klucza

<?php

       $arr1 = Array("jabłko", "gruszka", "truskawka", "malina");

       var_dump($arr1);

//array(4) { [0]=> string(6) "jablko" [1]=> string(7) "gruszka" [2]=> string(9) "truskawka" [3]=> string(6) "malina" }

       print_r($arr1);

//Array ( [0] => jabłko [1] => gruszka [2] => truskawka [3] => malina )

       $arr2 = array("name", "surname", "address", "phone");

       var_dump($arr2);

//array(4) { [0]=> string(4) "name" [1]=> string(7) "surname" [2]=> string(7) "address" [3]=> string(5) "phone" }

       print_r($arr2);

//Array ( [0] => name [1] => surname [2] => address [3] => phone )

       $arr3 = ["host", "user", "password", "database"];

       var_dump($arr3);

//array(4) { [0]=> string(4) "host" [1]=> string(4) "user" [2]=> string(8) "password" [3]=> string(8) "database" }

       print_r($arr3);

//Array ( [0] => host [1] => user [2] => password [3] => database )

?>

Tablice jednowymiarowe z przypisanym kluczem do wartości

Indeksowanie w tablicach rozpoczyna się od 0.
Kluczem mogą być zarówno identyfikatory liczbowe i tekstowe.

<?php

       $arr1 = [0 => "jabłko", 1 => "gruszka", 2 => "truskawka", 3 => "malina"];

       var_dump($arr1);

//array(4) { [0]=> string(6) "jabłko" [1]=> string(7) "gruszka" [2]=> string(9) "truskawka" [3]=> string(6) "malina" }

       print_r($arr1);

//Array ( [0] => jabłko [1] => gruszka [2] => truskawka [3] => malina )

?>

Tablice Asocjacyjne "klucz (z ang. key)" => "wartość (z ang. value)"

Klucz, indeks – zamiast identyfikatorów liczbowych stosuje się identyfikatory znakowe, poprzez które odwołujemy się do konkretnych wartości.

<?php

       $arr1 = ["host" => "localhost", "user" => "root", "password" => "pass", "database" => "name"];

       var_dump($arr1);

//array(4) { ["host"]=> string(9) "localhost" ["user"]=> string(4) "root" ["password"]=> string(4) "pass" ["database"]=> string(4) "name" }

       print_r($arr1);

//Array ( [host] => localhost [user] => root [password] => pass [database] => name )

?>

Tablice dwuwymiarowe

<?php

     $arrSad = [
       "jabłka" => [
          "odmiana1" => "ligol",
          "odmiana2" => "lobo",
       ],
       "śliwki" => [
          "odmiana1" => "mirabelka",
          "odmiana2" => "węgierka",
       ],
     ];


       var_dump($arrSad);

//array(2) { ["jabłka"]=> array(2) { ["odmiana1"]=> string(5) "ligol" ["odmiana2"]=> string(4) "lobo" } ["śliwki"]=> array(2) { ["odmiana1"]=> string(9) "mirabelka" ["odmiana2"]=> string(9) "węgierka" } }

       print_r($arrSad);

//Array ( [jabłka] => Array ( [odmiana1] => ligol [odmiana2] => lobo ) [śliwki] => Array ( [odmiana1] => mirabelka [odmiana2] => węgierka ) )

?>

Pobieranie poszczególnych elementów z tablicy

<?php

       $agro = [
            "zioła" => "100 kg",
            "owoce" => [
                 "jabłka" => "500 kg",
                 "gruszki" => "400 kg",
             ],
            "warzywa" => [
                 "marchew" => "200 kg",
                 "pietruszka" => "250 kg",
                 "seler" => "300 kg",
             ],
       ];
       $result0 = $agro["zioła"];
       $result1 = $agro["owoce"]["gruszki"];
       $result2 = $agro["warzywa"]["seler"];
       var_dump($result0); //string(6) "100 kg"
       var_dump($result1); //string(6) "400 kg"
       var_dump($result2); //string(6) "300 kg"

       //Dynamiczny sposób pobierania:
       $warzywa = 'warzywa';
       $result4 = $agro[$warzywa]["marchew"];
       var_dump($result4); //string(6) "200 kg"

?>

explode() – string -> array / implode() – array -> string

explode() – konwertuje ciąg, łańcuch znaków na tablicę
implode() – konwertuje tablicę na ciąg, łańcuch znaków, pierwszym argumentem tej funkcji może być dowolny znak, który połączy ten ciąg np. przecinek, myślnik, itd.

<?php

       $string = "dowolny ciąg, łańcuch znaków";
       $explodeArr = explode(' ', $string);

       var_dump($explodeArr);
// array(4) { [0]=> string(7) "dowolny" [1]=> string(6) "ciąg," [2]=> string(9) "łańcuch" [3]=> string(7) "znaków" }

       $implodeArr = implode(' ', $explodeArr);

       var_dump($implodeArr);
// string(32) "dowolny ciąg, łańcuch znaków"

?>

Funkcje operujące na tablicy

array_unshift() – wstawianie elementów na początek tablicy

<?php

       $arr = Array("jabłko", "gruszka", "truskawka", "malina");
       array_unshift($arr, "śliwka", "porzeczka");

//array(6) { [0]=> string(7) "śliwka" [1]=> string(9) "porzeczka" [2]=> string(7) "jabłko" [3]=> string(7) "gruszka" [4]=> string(9) "truskawka" [5]=> string(6) "malina" }

?>

array_push() – wstawianie elementów na koniec tablicy

<?php

       $arr = Array("jabłko", "gruszka", "truskawka", "malina");
       array_push($arr, "śliwka", "porzeczka");

//array(6) { [0]=> string(7) "jabłko" [1]=> string(7) "gruszka" [2]=> string(9) "truskawka" [3]=> string(6) "malina" [4]=> string(7) "śliwka" [5]=> string(9) "porzeczka" }

?>

array_intersect() – sprawdza pierwszą tablicę i porównuje z drugą, wskazuje i zwraca wspólne elementy

<?php

       $arr1 = array("inputData" => "age", "email", "nick", "pass");
       $arr2 = array("databaseData" => "email", "name", "nick", "pass", "phone", "surname");

       $result = array_intersect($arr1, $arr2);

       var_dump($result);

       //array(3) { ["inputData"]=> string(5) "email" [0]=> string(4) "nick" [1]=> string(4) "pass" }

?>

array_merge() – łączy tablice w jedną tablicę dodając jedną po drugiej, jeżeli napotka klucze o tej samej nazwie nadpisze wartość

<?php

       $arr1 = array("inputData" => "age", "email", "nick", "pass");
       $arr2 = array("databaseData" => "email", "name", "nick", "pass", "phone", "surname");

       $result = array_merge($arr1, $arr2);

       var_dump($result);

       //array(10) { ["inputData"]=> string(5) "email" [0]=> string(4) "nick" [1]=> string(4) "pass" [2]=> string(3) "age" ["databaseData"]=> string(5) "email" [3]=> string(4) "name" [4]=> string(4) "nick" [5]=> string(4) "pass" [6]=> string(5) "phone" [7]=> string(7) "surname" }

?>

array_diff() – porównuje tablice i oblicza różnicę tablic, otrzymamy tylko te elementy, które występują w tablicy pierwszej a nie występują w tablicy drugiej, brane są pod uwagę wartości

<?php

       $arr1 = ["zbiór A" => "kwadrat", "prostokąt", "koło", "romb", "trapez", "równoległobok"];
       $arr2 = ["zbiór B" => "kwadrat", "prostokąt", "romb", "równoległobok"];

       $result = array_diff($arr1, $arr2);

       var_dump($result);

       // array(2) { [1]=> string(5) "koło" [3]=> string(6) "trapez" }

       print_r($result);

       // Array ( [1] => koło [3] => trapez )

       $result = array_diff($arr2, $arr1);

       var_dump($result);

       // array(0) { }

       print_r($result);

       // Array ( )

?>

array_diff_key() – porównuje tablice przy użyciu kluczy i oblicza różnicę tablic

Spacerowanie po tablicy

array_walk() - przechodzenie po tablicy i modyfikowanie elementów tablicy

array_walk(tablica po której chcemy przejść, funkcja wykonująca pewne operacje na elementach tablicy);

& – wskaźnik, odnośnik, skrót do wartości zmiennej wyznaczony do modyfikacji w tablicy

<?php

       $arr = ["red", "green", "blue"];

       function upper1($value) {
            var_dump($value); //string(3) "red" red string(5) "green" green string(4) "blue" blue
       }
       array_walk($arr, 'upper2');

       function upper2(&$value) {
            $value = strtoupper($value);
       }
       array_walk($arr, 'upper2');
       var_dump($arr); // array(3) { [0]=> string(3) "RED" [1]=> string(5) "GREEN" [2]=> string(4) "BLUE" }

?>

array_map – zwraca nową wartość bez modyfikacji tablicy, przyjmuje parametry w odwróconej kolejności w stosunku do array_walk()

array_map(funkcja wykonująca pewne operacje na elementach tablicy, tablica po której chcemy przejść);

<?php

       $arr = ["red", "green", "blue"];

       function upper($value) {
            return strtoupper($value);
       }
       $result = array_map('upper', $arr);
       var_dump($result); //array(3) { [0]=> string(3) "RED" [1]=> string(5) "GREEN" [2]=> string(4) "BLUE" }

       $result = array_map( function ($value) { // Zapis PHP 7 możliwość dodawania funkcji anonimowych
            return strtoupper($value);
       }, $arr);
        var_dump($result); // array(3) { [0]=> string(3) "RED" [1]=> string(5) "GREEN" [2]=> string(4) "BLUE" }

?>

Pętle – instrukcje sterujące operujące na tablicach

Pętla for($i = 0; $i < 10; $i++){ }

Pętla for( ){ } najczęściej jest wykorzystywana do przechodzenia po elementach tablicy, ale także operuje na pewnym zakresie liczb.

<?php

       $a = 0;
       for ($a = 0; $a <= 7; $a++) {
          var_dump($a);
          echo "<br />";
       }

       // int(0)
       // int(1)
       // int(2)
       // int(3)

       $owoce = ["jabłko", "gruszka", "truskawka", "malina"];
       for ($a = 0; $a < count($owoce); $a++) {
          var_dump($a, $owoce[$a]);
          echo "<br />";
       }

       // int(0) string(7) "jabłko"
       // int(1) string(7) "gruszka"
       // int(2) string(9) "truskawka"
       // int(3) string(6) "malina"

?>

Pętla while( ){ }

<?php

       $a = 0;
       while ($a < 3) {
          var_dump($a);
          $a++;
          echo "<br />";
       }

       // int(0)
       // int(1)
       // int(2)

       $owoce = ["jabłko", "gruszka", "truskawka", "malina"];
       $a = 0;
       while ($a < count($owoce)) {
          var_dump($a, $owoce[$a]);
          $a++;
          echo "<br />";
       }

       // int(0) string(7) "jabłko"
       // int(1) string(7) "gruszka"
       // int(2) string(9) "truskawka"
       // int(3) string(6) "malina"

?>

Pętla foreach($array as $value){ }

<?php

       $owoce = ["jabłko", "gruszka", "truskawka", "malina"];
       $a = 0;
       foreach ($owoce as $owoc) {
          var_dump($owoc);
          echo "<br />";
       }

       // string(7) "jabłko"
       // string(7) "gruszka"
       // string(9) "truskawka"
       // string(6) "malina"

?>

Pętla foreach($array as $key => $value){ }

Pętla foreach idealna do pobierania danych z bazy danych.

<?php

       $owoce = [
          "jabłko" => "Gloster",
          "gruszka" => "Lukasówka",
          "truskawka" => "Grandarosa",
          "malina" => "Polka",
       ];
       foreach ($owoce as $index => $value) {
          var_dump($index, $value);
          echo "<br />";
       }

       // string(7) "jabłko" string(7) "Gloster"
       // string(7) "gruszka" string(10) "Lukasówka"
       // string(9) "truskawka" string(10) "Grandarosa"
       // string(6) "malina" string(5) "Polka"

?>

Wszystkie tablicowe funkcje można znaleźć pod adresem https://www.php.net/manual/en/book.array.php.

Wróć do Kompendium