Wiele wartości w jednej zmiennej
echoarrays.php z listą gier i planem dnia$age to zmienna, a age nie?echo "Ala" . "ma" . 5;?echo "Cześć $name"; od echo 'Cześć $name';?Bez tablicy potrzebujecie pięciu zmiennych: $game1, $game2… Tablica to jedna zmienna z wieloma szufladami. Każda szuflada ma numer, zaczynając od 0.
$games = ["Minecraft", "Fortnite", "FIFA", "Rocket League", "Among Us"];
echo $games[0]; // Minecraft (pierwszy element)
echo $games[4]; // Among Us (ostatnia z pięciu)
$games[] = "Tetris"; // dopisz na koniec: dostaje numer 5
echo count($games); // 6 (ile elementów jest w tablicy)
Nawiasy kwadratowe [ ] tworzą tablicę. Elementy oddzielacie przecinkiem. Puste [] po nazwie znaczy: dołóż nowy element na końcu.
[], odczyt array[key], $arr[] = value) · php.net/manual/en/language.types.array.php · PHP Manual: count · php.net/manual/en/function.count.php$student = [
"name" => "Anna",
"age" => 18,
"city" => "Warszawa",
];
echo $student["name"]; // Anna
echo $student["age"]; // 18
Zamiast numeru każda szuflada ma podpis (klucz). Klucz to tekst w cudzysłowie albo liczba. Wartość może być dowolna. Strzałka => czytamy: „klucz wskazuje na wartość”.
Ciekawostka z PHP Manual: kluczem tablicy może być tylko liczba całkowita albo tekst, więc PHP dopasowuje do tego inne wartości. Liczba z przecinkiem jako klucz traci część po przecinku (8.7 zamienia się w 8), a klucz null zamienia się w pusty tekst.
print_r($student);
// Array
// (
// [name] => Anna
// [age] => 18
// [city] => Warszawa
// )
Do szukania błędów. Pokazuje wszystkie klucze i wartości. W przeglądarce włączcie „Pokaż źródło”, żeby zobaczyć wcięcia.
echo "<ol>";
foreach ($games as $game) {
echo "<li>$game</li>";
}
echo "</ol>";
foreach ($student as $key => $value) {
echo "<li>$key: $value</li>";
}
foreach czytamy: „dla każdego elementu z tablicy zrób…”. Dziś tylko jako sposób wypisania. Pętle w całości na kolejnych lekcjach.
$key => $value) · php.net/manual/en/control-structures.foreach.php$students = [
["name" => "Anna", "grade" => 5],
["name" => "Bartek", "grade" => 4],
];
echo $students[0]["name"]; // Anna
echo $students[1]["grade"]; // 4
Wartością szuflady może być cała kolejna tablica. Czytacie od lewej: najpierw numer ucznia, potem podpis pola.
| Co piszecie | Co się dzieje | Poprawka |
|---|---|---|
$games[1] „bo to pierwsza gra” | wypisze DRUGĄ grę, numeracja od 0 | pierwsza to $games[0], ostatnia $games[count($games) - 1] |
$student["email"], a klucza nie ma | Warning: Undefined array key "email", wynik null (puste miejsce) | sprawdźcie literówkę w kluczu, print_r pokaże, jakie klucze są |
$student[name] bez cudzysłowu | PHP szuka stałej name (nazwy bez $), błąd | klucz tekstowy zawsze w cudzysłowie: $student["name"] |
"age" = 18 albo "age" : 18 | błąd składni | strzałka to dokładnie =>; >= też przejdzie bez błędu, ale zrobi porównanie, nie parę klucz i wartość |
| brak przecinka między elementami | błąd składni z numerem linii | przecinek po każdym elemencie, po ostatnim też wolno |
1. Która definicja tablicy asocjacyjnej w języku PHP jest poprawna składniowo?
$age = array("Anna"=35, "Ewa"=37, "Oliwia"=43);$age = array([Anna, 35], [Ewa, 37], [Oliwia, 43]);$age = array("Anna"=>"35", "Ewa"=>"37", "Oliwia"=>"43");$age = array({"Anna", "35"}, {"Ewa", "37"}, {"Oliwia", "43"});array(...) to starszy zapis tego samego, co [...]. Na egzaminie wciąż go spotkacie.
2. $tab = explode(",", "jelenie,sarny,dziki,lisy,borsuki");echo $tab[1]." ".$tab[2];
Wskaż wynik wykonania przedstawionego kodu PHP, jeżeli zmienna tab jest tablicą.
explode dzieli tekst po przecinku i zwraca tablicę.
htdocs serwera utwórz plik arrays.php.$games z pięcioma Twoimi ulubionymi grami. Pod nią dopisz szóstą: $games[] = ...;count($games), a pod nim gry jako <ol> (foreach ze slajdu, <li> w środku).$dayPlan: klucz to godzina ("7:00"), wartość to czynność ("pobudka"), co najmniej 4 pary. Wypisz ją jako <ul>, w każdym punkcie „godzina: czynność” (foreach z $key => $value).localhost/arrays.php.Ma się pojawić: „Moje gry: 6”, lista z numerami 1 do 6, pod nią lista z kropkami, np. „7:00: pobudka”. Zero ostrzeżeń „Warning”.
Bez uruchamiania. Zapisz wynik każdego fragmentu, potem sprawdź w XAMPP.
// A
$colors = ["czerwony", "zielony", "niebieski"];
echo $colors[1];
Co wypisze ten kod?
// B
$numbers = [10, 20, 30];
$numbers[] = 40;
echo count($numbers);
Co wypisze ten kod?
// C
$prices = ["bread" => 5, "butter" => 9];
echo $prices["bread"] + $prices["butter"];
Co wypisze ten kod?
// D
$days = ["pn", "wt", "sr"];
echo $days[3];
Co wypisze ten kod?
$games i dlaczego $games[5] to szósty element?$student["email"], a takiego klucza nie ma?Następna lekcja: operatory, czyli jak PHP liczy, porównuje i skleja.
| Na lekcji | W produkcji | Status |
|---|---|---|
$student = ["name" => "Anna"] | Tak wygląda odpowiedź serwera dla aplikacji: tablica asocjacyjna zamieniona na tekst w formacie JSON (JavaScript Object Notation). json_encode($student) daje {"name":"Anna","age":18,"city":"Warszawa"}. Każde API (interfejs programu) napisane w PHP kończy się tym wywołaniem. | nadal w użyciu |
array(...) z zadań CKE | Nowy kod pisze [...]. array() czytacie w starszych projektach i na egzaminie. | zastępowane |
print_r($student) | Tylko podczas szukania błędu na własnym komputerze. W gotowej stronie nie ma go nigdy: wypisałby dane użytkowników na ekran. | narzędzia |
tablica w tablicy $students | Lista uczniów pobrana z bazy danych ma dokładnie ten kształt: tablica wierszy, każdy wiersz to tablica asocjacyjna z nazwami kolumn. Dane z formularza też przychodzą jako tablica ($_POST). | nadal w użyciu |