W budowie
Materiał edukacyjny · Informatyka

CZĘŚĆ 02

Łączenie tekstu i liczby

PPrezentacja dla nauczyciela

Łączenie tekstu kropką ., obliczenia arytmetyczne, reszta z dzielenia i formatowanie kwot przez number_format(). Poznaj różnicę między dodawaniem a sklejaniem.

Sklejanie tekstu kropką

Kropka . łączy napisy i dokleja do nich liczby. Wynik jest zawsze tekstem, więc 'Razem: ' . 5 . ' zł' da na stronie jedno zdanie, a nie trzy osobne wartości.

Uważaj na kolejność: PHP liczy od lewej do prawej, więc '2 + 2 = ' . 2 + 2 da 2 + 2 = 22? Nie — da 4, bo najpierw powstanie tekst, a potem dodawanie potraktuje go jak liczbę. Dla pewności liczby liczymy w nawiasach: '2 + 2 = ' . (2 + 2).

Sklejanie kropką jest bezpieczne i przewidywalne: nie zależy od ustawień serwera ani od tego, czy w napisie są polskie znaki.

$imie = 'Ola';
$punkty = 18;

echo 'Uczen: ' . $imie;
echo '<p>Punkty: ' . $punkty . ' z 20</p>';
echo '<p>Srednia: ' . ($punkty / 20 * 100) . '%</p>';
1. Czym sklejamy napisy w PHP?
2. Jaki typ ma wynik sklejania?
3. Po co nawias przy liczeniu?

Cudzysłowy i wstawianie zmiennych

W cudzysłowach podwójnych PHP wstawia wartość zmiennej wprost do napisu: "Witaj, $imie!". W apostrofach to się nie dzieje — 'Witaj, $imie!' wypisze dosłownie znak dolara i nazwę zmiennej.

Gdy za zmienną stoi tekst (np. $imie i litera), PHP może pomylić nazwę. Wtedy pomaga nawias klamrowy: "Witaj, {$imie}ka!". Apostrofy są szybsze i pewniejsze, gdy w zdaniu nie ma zmiennych.

Wybór cudzysłowu wpływa też na znaki specjalne: w podwójnych \n oznacza nową linię, a w pojedynczych jest zwykłym tekstem.

$imie = 'Ala';
$wiek = 17;

echo "Uczen: $imie, wiek: $wiek lat";
echo '<p>To samo w apostrofach: $imie</p>';
echo "<p>Sklejone: " . $imie . ' ma ' . $wiek . ' lat</p>';
4. W jakich cudzysłowach działa $imie?
5. Co wypisze '$imie' w apostrofach?
6. Do czego służy zapis {$imie}?

Liczby, konwersje i zaokrąglanie

Dane z formularza zawsze przychodzą jako tekst, nawet gdy pole nazywa się cena. Do liczenia trzeba je najpierw zamienić: intval($_GET['sztuki']) da liczbę całkowitą, a floatval() liczbę zmiennoprzecinkową.

Do formatowania wyniku służy number_format($kwota, 2, ',', ' ') — dwa miejsca po przecinku, polski separator i spacja w tysiącach. Zaokrąglenie robi round(), a resztę z dzielenia %.

Dzielenie zawsze zwraca liczbę zmiennoprzecinkową, więc 10 / 4 to 2.5, a nie 2. Gdy potrzebna jest część całkowita, użyj intdiv(10, 4).

$sztuki = intval('3');
$cena = floatval('19.99');

$razem = $sztuki * $cena;
echo 'Razem: ' . number_format($razem, 2, ',', ' ') . ' zl';
echo '<p>Polowa: ' . round($razem / 2, 2) . '</p>';
echo '<p>Reszta z dzielenia: ' . ($sztuki % 2) . '</p>';
7. Jak zamienić tekst na liczbę całkowitą?
8. Co zwraca dzielenie 10 / 4?
9. Co robi number_format()?

Ćwiczenia