INF.03 · Aplikacje internetowe PHP

Zmienne i typy danych w PHP

Zmienna ma wartość i typ.

  • PHP8.3
  • mysqli · MariaDB
  • Praktyka i diagnoza

Po tej lekcji: Dobierzesz typ danych oraz obliczysz kwotę bez błędów typowych dla cen zapisanych jako float.

Zrozum mechanizm

Zmienna zaczyna się od $, np. $liczbaBiletow. = przypisuje wartość; === porównuje wartość i typ; == może wykonywać konwersję typów. Rozróżniaj int, float, string, bool, null i array. PHP ma typy dynamiczne: typ dotyczy wartości i może się zmienić po przypisaniu. var_dump() pokazuje typ i wartość — używaj go lokalnie do diagnozy, nie do wypisywania haseł.

Arytmetyka: + - * /, % reszta z dzielenia, ** potęga; . skleja tekst. Nawiasy wyrażają kolejność działań. Podwójny cudzysłów interpoluje proste zmienne, pojedynczy zachowuje ich zapis. ?? dostarcza wartość dla braku lub null. Kwoty przechowuj jako całkowite grosze. Float jest przybliżeniem i nie jest dobrym podstawowym zapisem pieniędzy.

Jak uruchamiać krótkie przykłady?

Każdy krótki przykład oznaczony własnym plikiem uruchamiaj osobno, nie doklejaj wszystkich definicji do jednego pliku. W edytorze zapisz go jako .php, a w terminalu tego folderu wpisz np. php for.php. Wtedy pokazane końce wierszy PHP_EOL są widoczne. W odpowiedzi HTML znak końca wiersza sam nie robi nowej linii na ekranie: użyj <br> albo znacznika <pre>. Wyświetl źródło pozwala zobaczyć tekst odpowiedzi.

Przykłady opisane jako fragment projektu wymagają paczki KINO / LAB i wcześniejszej konfiguracji. Nie uruchamiaj ich jako samodzielnych endpointów. Pełny plik niżej pokazuje kontekst. Funkcje h(), pole() i wymagajPost() są nasze; ich definicje wczytuje bootstrap.php.

Zmienna i typ: co właściwie zapisujesz?

Nazwa zmiennej zaczyna się od dolara, dalej jest litera lub podkreślenie, potem mogą być cyfry. Wielkość liter ma znaczenie: $wiek i $Wiek to różne nazwy. Nie pisz typu przed nazwą przy zwykłym przypisaniu.

Podstawowa forma: $nazwa = wartość;

typy.phpphp
<?php
$wiek = 16;              // int
$cena = 12.99;           // float
$tytul = 'Kosmos';       // string
$dostepny = true;        // bool
$brak = null;           // brak wartości
$filmy = ['Kosmos'];     // array
echo gettype($wiek) . PHP_EOL;
echo "Film: $tytul" . PHP_EOL;
echo 'Film: $tytul';
Wynik
integer
Film: Kosmos
Film: $tytul
  1. int oznacza pełną liczbę; float przybliżoną liczbę z częścią ułamkową (kropka w kodzie).
  2. string to tekst, bool to true lub false, null celowy brak wartości, a array przechowuje wiele elementów.
  3. gettype($wiek) zwraca nazwę typu. var_dump($wiek) dodatkowo pokazuje wartość; używaj lokalnie.
  4. Podwójny cudzysłów podstawia $tytul; pojedynczy w tym przykładzie zachowuje zapis $tytul.

Działanie, przypisanie i porównanie

Nie każdy znak między wartościami służy do liczenia. Najpierw odróżnij = od ===, a kropkę od plusa.

Podstawowa forma: wynik = lewa_strona operator prawa_strona (w PHP nazwę wyniku poprzedź $)

operatory.phpphp
<?php
$a = 7;
$b = 2;
echo ($a + $b) . PHP_EOL;
echo ($a / $b) . PHP_EOL;
echo ($a % $b) . PHP_EOL;
echo ($a ** $b) . PHP_EOL;
echo ('7' === 7 ? 'tak' : 'nie');
Wynik
9
3.5
1
49
nie
  1. +, -, *, / dodają, odejmują, mnożą i dzielą. % daje resztę: 7 = 3·2 + 1.
  2. ** to dwie gwiazdki: 7 do potęgi 2 daje 49. ^ nie jest potęgowaniem w PHP.
  3. = przypisuje, === porównuje wartość i typ. Napis "7" i liczba 7 nie są identyczne.
  4. warunek ? wynik_gdy_prawda : wynik_gdy_fałsz to krótkie wyrażenie warunkowe, tutaj wybiera tekst tak/nie.

Funkcje tekstowe i obiekt daty: co znaczą argumenty?

Nazwa funkcji to dopiero początek. W nawiasach podajesz dane w określonej kolejności, a metoda obiektu korzysta też ze stanu tego obiektu.

Podstawowa forma: trim(tekst), mb_strtoupper(tekst, kodowanie), obiektDaty->format(wzor)

teksty-daty.phpphp
<?php
$tekst = '  Kino szkolne  ';
echo trim($tekst) . PHP_EOL;
echo mb_strtoupper('Podróż', 'UTF-8') . PHP_EOL;
$seans = new DateTimeImmutable('2026-10-27 16:00', new DateTimeZone('Europe/Warsaw'));
echo $seans->format('d.m.Y H:i') . PHP_EOL;
echo $seans->modify('+1 day')->format('Y-m-d');
Wynik
Kino szkolne
PODRÓŻ
27.10.2026 16:00
2026-10-28
  1. trim oddaje tekst bez białych znaków na brzegach. mb_strtoupper zamienia litery na wielkie z uwzględnieniem UTF-8; wymaga rozszerzenia mbstring.
  2. new DateTimeImmutable tworzy obiekt daty. Pierwszy argument to data i czas, drugi obiekt strefy; DateTimeZone określa Europe/Warsaw.
  3. format odczytuje wzór: d dzień, m miesiąc, Y pełny rok, H godzina, i minuty. M to nie to samo co m — wielkość liter ma znaczenie.
  4. modify("+1 day") zwraca nowy obiekt przesunięty o dzień. Strzałki można łączyć: najpierw modify, potem format. Oryginalny seans nie został zmieniony.

Jak czytać pozostałe zapisy w pełnym przykładzie

ZapisZnaczeniePrzykład użycia
===, !==, &&, ||, !Identyczne, nieidentyczne, i, lub, zaprzeczenie. Porównanie ścisłe obejmuje typ; &&/|| nie sprawdzają drugiej części, gdy wynik jest już rozstrzygnięty.$rok === false || $rok < 1888
-> oraz ::-> wybiera właściwość lub metodę obiektu; :: odnosi się do elementu statycznego klasy. To nie jest zapis dostępu do tablicy.$zapytanie->execute();

Sprawdź w działaniu

Zmienna ma wartość i typ — sprawdź w modelu

Model w przeglądarce wyjaśnia mechanizm na fikcyjnych danych. Nie wykonuje PHP ani zapytań SQL i nie tworzy kont. Prawdziwe skrypty uruchomisz lokalnie z paczki.

Ta interakcja wymaga włączonego JavaScriptu.

Przewidź rezultat, wykonaj próbę i wyjaśnij, która decyzja po stronie serwera decyduje o wyniku.

Uruchom krok po kroku

Otwórz podstawy/02-zmienne.php. Zmieniaj po jednej wartości i przewiduj wynik. Porównaj 5 === "5" oraz 5 == "5". Oblicz 3*1299 groszy, dopiero przy prezentacji podziel na 100 i sformatuj do dwóch miejsc. Nie zastępuj haseł, tokenów ani rzeczywistych danych uczniów danymi do debugowania.

Plik wzorcowy: public/podstawy/02-zmienne.php

public/podstawy/02-zmienne.phpphp
<?php

$imie = 'Ola';
$liczbaBiletow = 3;          // int
$cenaGrosze = 1299;          // int, dokładna kwota w groszach
$sredniaOcena = 4.5;         // float
$maZnizke = true;           // bool
$brakWyboru = null;
echo "$imie kupuje $liczbaBiletow bilety.\n";
echo 'Zapis $imie bez podstawienia.'."\n";
echo 'Suma groszy: '.($liczbaBiletow * $cenaGrosze)."\n";
var_dump(5 === '5');        // false: inny typ

Wbudowane funkcje tekstu i dat

Trim usuwa zewnętrzne spacje, mb_strlen liczy znaki, a mb_strtoupper zmienia wielkość liter z obsługą UTF-8. Nie używaj trim do hasła. Number_format służy do prezentacji kwoty; nie zmienia zasady przechowywania ceny jako groszy. DateTimeImmutable pozwala jawnie określić strefę i tworzy nową datę po modify zamiast zmieniać poprzednią. Data pochodząca od użytkownika wymaga osobnej kontroli formatu i poprawności.

Próba tekstu i daty

public/podstawy/07-teksty-daty.phpphp
<?php
$tekst = '  Kino szkolne  ';
echo trim($tekst) . "\n";
echo mb_strtoupper('Podróż', 'UTF-8') . "\n";
$seans = new DateTimeImmutable('2026-10-27 16:00', new DateTimeZone('Europe/Warsaw'));
echo $seans->format('d.m.Y H:i') . "\n";
echo $seans->modify('+1 day')->format('Y-m-d');

Pobierz i odtwórz projekt

W „Źródłach i materiałach” na końcu pobierz KINO / LAB.zip. Rozpakuj całość; instrukcja START.txt opisuje konfigurację. Pierwsze 6 przykładów w public/podstawy działa bez bazy. Dalsze wymagają lokalnej MariaDB 11.4, importu schema.sql i lokalnego konta bazy z minimalnymi prawami. Gotowa paczka pokazuje całość, ale w tej lekcji wykonaj opisane kroki i własne zadanie.

Ćwiczenie z pomocą · samodzielna praca

Twoja próba — podpowiedzi otwieraj po kolei

Oblicz koszt 4 biletów po 1599 groszy. Wypisz typ liczby biletów i wynik porównania liczby 4 z napisem"4" przez ===.

Oczekiwany rezultat
6396 groszy, int i false.
Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź

Odszukaj wskazany plik i zapisz przewidywany rezultat przed zmianą.

Krok 2 — pokaż podpowiedź

Zmień jedną rzecz. Sprawdź metodę żądania, dane i odpowiedź lub wynik programu.

Krok 3 — pokaż podpowiedź

Wykonaj próbę graniczną lub błędną. Porównaj także stan bazy lub sesji, nie tylko komunikat.

Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.

Podsumowanie

Co warto zapamiętać

  1. Dobierzesz typ danych oraz obliczysz kwotę bez błędów typowych dla cen zapisanych jako float.
  2. Potrafisz wskazać w kodzie przyczynę wyniku i zaplanować próbę błędnych danych.
  3. Nie oddajesz haseł, pliku config.local.php ani wartości cookie.

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka