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()
.
Do przeprowadzenia testu, wystarczy nam jeden plik z następującym skryptem PHP:
Ćwiczenie 2_2_0_1. Sprawdzanie dostępu do elementów tablicy o danych indeksach lub kluczach
<?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: