Część 08 kursu PHP pod kątem INF.03: Tablice. Teoria w skrócie i 16 ćwiczeń z automatycznym sprawdzaniem — tablice indeksowane i asocjacyjne, pętla foreach, count, min/max/array_sum, implode i explode.
Tablica przechowuje wiele wartości pod jedną nazwą. W tablicy indeksowanej kluczami są kolejne liczby od zera: $oceny = [5, 4, 3]; , więc $oceny[0] to 5 .
$oceny = [5, 4, 3];
$oceny[] = 6;
echo 'Elementow: ' . count($oceny);
echo '<p>Pierwsza ocena: ' . $oceny[0] . '</p>';
echo '<p>Ostatnia ocena: ' . $oceny[count($oceny) - 1] . '</p>';
$oceny = [5, 4, 3];
$oceny[] = 6;
echo 'Elementow: ' . count($oceny);
echo '<p>Pierwsza ocena: ' . $oceny[0] . '</p>';
echo '<p>Ostatnia ocena: ' . $oceny[count($oceny) - 1] . '</p>';
Od jakiego indeksu zaczyna się tablica?
Poprawna: d) Pierwszy element ma indeks 0.
W tablicy asocjacyjnej kluczem jest nazwa, a nie liczba: $uczen = ['imie' => 'Ola', 'klasa' => '3TI']; . Odczyt wygląda jak przy tablicy indeksowanej, tylko w nawiasach podajemy klucz tekstowy.
$uczen = [
'imie' => 'Ola',
'klasa' => '3TI',
'punkty' => 18,
];
echo $uczen['imie'] . ' z klasy ' . $uczen['klasa'];
echo '<p>Punkty: ' . $uczen['punkty'] . '</p>';
echo '<p>Email: ' . ($uczen['email'] ?? 'brak') . '</p>';
$uczen = [
'imie' => 'Ola',
'klasa' => '3TI',
'punkty' => 18,
];
echo $uczen['imie'] . ' z klasy ' . $uczen['klasa'];
echo '<p>Punkty: ' . $uczen['punkty'] . '</p>';
echo '<p>Email: ' . ($uczen['email'] ?? 'brak') . '</p>';
Czym jest klucz w tablicy asocjacyjnej?
Poprawna: a) Klucze to nazwy opisujące wartości.
foreach przechodzi po tablicy i podstawia kolejne wartości. W wersji foreach ($tab as $klucz => $wartosc) otrzymujemy też klucze — to najwygodniejszy sposób wypisania tablicy asocjacyjnej.
$punkty = ['Ola' => 18, 'Jan' => 12, 'Ewa' => 20];
foreach ($punkty as $imie => $ile) {
echo '<p>' . $imie . ': ' . $ile . '</p>';
}
echo '<p>Suma: ' . array_sum($punkty) . '</p>';
echo '<p>Najlepszy: ' . max($punkty) . '</p>';
echo '<p>Lista: ' . implode(', ', array_keys($punkty)) . '</p>';
$punkty = ['Ola' => 18, 'Jan' => 12, 'Ewa' => 20];
foreach ($punkty as $imie => $ile) {
echo '<p>' . $imie . ': ' . $ile . '</p>';
}
echo '<p>Suma: ' . array_sum($punkty) . '</p>';
echo '<p>Najlepszy: ' . max($punkty) . '</p>';
echo '<p>Lista: ' . implode(', ', array_keys($punkty)) . '</p>';
Co daje foreach z kluczem?
Poprawna: b) Zapis as $k => $v daje oba elementy.