POWRÓT NA STRONĘ SZKOŁY

Dostęp do elementów tablic

Wiemy, że tablice przechowują wiele danych. Podczas pracy z tablicami najważniejszy jest dostęp do tych danych. Możemy wyszczególnić kilka sytuacji, które mają miejsce podczas pisania skrytów.

Dostęp do elementów o znanych indeksach lub kluczach

Jeżeli chcemy uzyskać dostęp do elementu tablicy o znanym indeksie lub kluczu, to mamy prostą sytuację, np. $element=$tablica[indeks]; lub np. $element=$tablica['jakis_klucz'];. Jeżeli nie mamy pewności, czy dany element istnieje możemy dodatkowo zastosować funkcje isset() lub empty().

Ćwiczenie 2_2_0_1. Sprawdzanie dostępu do elementów tablicy o danych indeksach lub kluczach

Do przeprowadzenia testu, wystarczy nam jeden plik z następującym skryptem PHP:

<?php
1)   $tablica_1[3]=5;
2)   $tablica_1[5]=10;
3)   if (isset($tablica_1[2])) echo '$tablica_1[2]=='.$tablica_1[2];
4)   else echo 'Element $tablica_1[2] nie istnieje';
5)   echo '<br />$tablica_1[3]=='.$tablica_1[3];
6)   echo '<br />$tablica_1[5]=='.$tablica_1[5];
  
7)   echo '<br /><br />';
8)   $tablica_2['klucz_1']=15;
9)   $tablica_2['klucz_2']=20;
10)  $tablica_2['klucz_3']='';
11)  if (empty($tablica_2['klucz_0'])) 
12)  echo 'Element $tablica_2['."'klucz_0'".'] nie istnieje lub jest pusty';
13)  else echo '$tablica_2['."'klucz_0'".']=='.$tablica_2['klucz_0'];
14)  echo '<br />$tablica_2['."'klucz_1'".']=='.$tablica_2['klucz_1'];
15)  echo '<br />$tablica_2['."'klucz_2'".']=='.$tablica_2['klucz_2'];
  
16)  if (!isset($tablica_2['klucz_3'])) 
17)  echo '<br />Element $tablica_2['."'klucz_3'".'] nie istnieje';
18)  else if (empty($tablica_2['klucz_3'])) 
19)  echo '<br />Element $tablica_2['."'klucz_3'".'] jest pusty';
20)  else echo '<br />$tablica_2['."'klucz_3'".']=='.$tablica_2['klucz_3'];
?>

Dostęp do elementów poprzez zastosowanie pętli for oraz funkcji count()

Tworząc tablicę indeksowaną numerycznie, najczęściej dbamy o to, aby indeksy stanowiły kolejne liczby całkowite począwszy od zera. W takiej sytuacji możemy przeglądać dane stosując pętlę for oraz funkcję count(), określającą liczbę elementów danej tablicy.

Ćwiczenie 2_2_0_2. Przeglądanie tablicy za pomocą pętli for oraz funkcji count()

Napisz skrypt, który wypełni n-elementową tablicę, liczbami losowymi, branymi z zakresu od 30 do 300, a następnie wyświetli elementy tej tablicy. Liczbę n wylosuj z liczb od 2 do 10. Zastosuj jeden plik z następującym skryptem PHP:

<?php
  $rozmiar_tablicy=rand(2,10);
  for ($i=0; $i<$rozmiar_tablicy; $i++) $tablica[$i]=rand(30,300);
  
  //zakładamy, że nie znamy rozmiaru tablicy
  for ($i=0; $i<count($tablica); $i++) echo $tablica[$i].', ';
?>

Dostęp do elementów poprzez zastosowanie pętli foreach

Pętla foreach jest idealna do przeglądania elementów tablicy. Nie musimy znać liczby elementów tablicy, ani jej indeksów czy kluczy. Po prostu w każdym obiegu pętli dostajemy kolejny element tablicy.

Ćwiczenie 2_2_0_3. Przeglądanie tablicy za pomocą pętli foreach - przykład 1

Zmodyfikuj skrypt z poprzedniego ćwiczenia tak, aby zastosować petlę foreach.

<?php
  $rozmiar_tablicy=rand(2,10);
  for ($i=0; $i<$rozmiar_tablicy; $i++) $tablica[$i]=rand(30,300);
  
  //zakładamy, że nie znamy rozmiaru tablicy
  foreach ($tablica as $wartosc_elementu) echo $wartosc_elementu.', ';
?>

Wartość kolejnego elementu tablicy, to w naszym przykładzie $wartosc_elementu pisane po słowie kluczowym as.

Ćwiczenie 2_2_0_4. Przeglądanie tablicy za pomocą pętli foreach - przykład 2

Skrypt z poprzedniego ćwiczenia zmodyfikujemy tak, aby wyświetlał oprócz wartości kolejnym elementów, również ich indeksy.

<?php
  $rozmiar_tablicy=rand(2,10);
  for ($i=0; $i<$rozmiar_tablicy; $i++) $tablica[$i]=rand(30,300);
  
  //zakładamy, że nie znamy rozmiaru tablicy
  foreach ($tablica as $indeks=>$wartosc_elementu) 
  echo '$tablica['.$indeks.']==='.$wartosc_elementu.', ';
?> 

Ćwiczenie 2_2_0_5. Przeglądanie tablicy za pomocą pętli foreach - przykład 3

Sposób prezentowany w ostatnim ćwiczeniu jest szczególnie przydatny do przglądania tablic asocjacyjnych. Zastosuj poniższy kod PHP, aby to sprawdzić.

<?php
  $uczen=array('imie'=>'Franek', 'nazwisko'=>'Dolas', 'wiek'=>25, 'wzrost'=>180);
  foreach ($uczen as $klucz=>$wartosc_elementu) 
  echo $klucz.' - '.$wartosc_elementu.'<br />';
?> 

Jeżeli zapomniałeś jak przygotować i gdzie zapisywać pliki testowe: