Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

PHP: Tablice wielowymiarowe

środa,

PHP: Tablice wielowymiarowe

Tablica jest wielowymiarowa, wtedy kiedy przynajmniej jeden z jej elementów jest tablicą. Wymiarów tablicy może być wiele, elementy „wewnętrznej” tablicy mogą być tablicami.

W pierwszym przykładzie zadeklarowano tablicę dwuwymiarową. Nie ma ona regularnej budowy, trzy elementy tablicy $a są tablicami o różnej od siebie liczbie elementów, jeden element jest liczbą. Prezentowana tablica została wyświetlona za pomocą funkcji printf().

$a = [
  [12, 15, 11],
  12,
  [9, 16],
  [7, 11, 19, 20]
];

print_r($a);

Wynik działania kodu z pierwszego przykładu.

Array
(
    [0] => Array
        (
            [0] => 12
            [1] => 15
            [2] => 11
        )

    [1] => 12
    [2] => Array
        (
            [0] => 9
            [1] => 16
        )

    [3] => Array
        (
            [0] => 7
            [1] => 11
            [2] => 19
            [3] => 20
        )

)

W kolejnym przykładzie zadeklarowano w nieco inny sposób dokładnie taką samą tablicę jak poprzednio. Tym razem skrypt wykonuje konkretne zadanie, wyszukuje wszystkie parzyste liczby z tablicy. Przewidziano maksymalnie dwa wymiary tablicy (jeden poziom zagłębienia, wewnętrzna pętla foreach). Badając kolejne elementy tablicy, w przypadku kiedy element jest tablicą (is_array()), uruchamiana jest wewnętrzna pętla. Parzystość liczby można ustalić na kilka sposobów, w prezentowanym kodzie wykorzystano resztę z dzielenia (operator %). Jeśli jest reszta z dzielenia badanej liczby przez dwa ($x%2), wtedy liczba jest nieparzysta. Jeśli nie ma reszty (operator zaprzeczenia !), liczba jest parzysta. Znalezione w tablicy parzyste liczby są zapisywane jako elementy tablicy o nazwie $parzyste.

$a[] = [12, 15, 11];
$a[] = 12;
$a[] = [9, 16];
$a[] = [7, 11, 19, 20];
$parzyste = [];

foreach($a as $val) {
  if(is_array($val)) {
    foreach($val as $x) if(!($x%2)) $parzyste[] = $x;
  } else {
  	if(!($val%2)) $parzyste[] = $val;
  }
}

echo implode(', ', $parzyste);

W tablicach wielowymiarowych mogą wystąpić również tablice asocjacyjne. Jest to bardzo częsta sytuacja występująca podczas pobierania danych ze źródła zewnętrznego, np. z bazy danych. W ostatnim przykładzie generowane są plakietki dla pracowników. Zastosowane czytelne nazwy zmiennych, powodują, że kod nie powinien wymagać dodatkowych wyjaśnień.

$pracownicy[0]['nazwisko'] = 'Kowal';
$pracownicy[0]['imie'] = 'Jan';
$pracownicy[0]['stanowisko'] = 'referent';

$pracownicy[1]['nazwisko'] = 'Nowak';
$pracownicy[1]['imie'] = 'Adam';
$pracownicy[1]['stanowisko'] = 'informatyk';

$pracownicy[2]['nazwisko'] = 'Kos';
$pracownicy[2]['imie'] = 'Ewa';
$pracownicy[2]['stanowisko'] = 'kierownik';

foreach($pracownicy as $pracownik) {
 echo "<div>
   <h2>
    {$pracownik['imie']}
    {$pracownik['nazwisko']}
   </h2>
   <span>{$pracownik['stanowisko']}  
  </div>";
Artykuł: Szkoła Rycerska

Szkoła Rycerska

Ślubowanie kadetów Oddziału Przygotowania Wojskowego

Kawaleria polska

Słynne szarże polskiej kawalerii

Artykuł: Szarża pod Somosierrą

Szarża pod Somosierrą

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły