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.