IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Výpis (funkce) - Český PHP manuál

V tomto dílu PHP tutoriálů si ukážeme funkce pro výpis. PHP jich má poměrně mnoho, ukažme si ty nejpoužívanější.

echo

Echo je základní funkce pro výpis, předané parametry jsou jednoduše vypsány do dokumentu, který je následně klientovi poslán. Přesněji se nejedná o funkci, ale konstrukci. To nám umožňuje vynechávat závorky, často se to tak i dělá.

Parametry

Libovolný počet libovolných parametrů, které jsou následně vypsány. Funkce samozřejmě umožňuje vypsat i proměnné a to i jiných typů, než string.

Příklad

Následující kód vypíše do kódu dokumentu Hello itnetwork:

<?php
echo 'Hello itnetwork!';

Nyní vypíšeme obsah proměnné:

<?php
$den = 7;
echo $den;

Při zadání více parametrů dojde k jejich konkatenaci (spojení v jeden text). Jelikož se výsledek vždy převede na řetězec, můžeme do parametru vkládat vše, co již bylo řečeno v tutoriálu Práce s řetězci v PHP .

printf

Printf umožňuje vypsat formátovaný výstup. Jednoduše řečeno vytvoříme šablonu textu a do ni vložíme proměnné, vyhneme se tak konkatenaci, která může být nepřehledná. Daní za přehlednost je nižší rychlost funkce.

Parametry

Prvním parametrem je formát, tedy šablona textu. Dalšími parametry jsou proměnné, které se do šablony vloží namísto zástupných znaků.

Zástupné znaky ve formátu jsou:

  • %b - celé číslo bude zformátováno jako binární.
  • %c - celé číslo bude zformátováno jako znak s příslušnou ASCII hodnotou.
  • %d - celé číslo bude zformátováno jako celé číslo.
  • %e - argument je interpretován jako číslo ve vědeckém zápisu (např. 1.5e+3)
  • %E - to samé jako předchozí, pouze s velkým E.
  • %u - celé číslo je zformátováno jako unsigned (celé kladné číslo většího rozsahu).
  • %f - argument je zformátován jako desetinné číslo.
  • %F - argument je zformátován jako desetinné číslo bez ohledu na regionální nastavení (desetinný separátor).
  • %g - zkratka pro %e a %f.
  • %G - zkratka pro %E a %f.
  • %o - celé číslo je zformátováno do osmičkové soustavy.
  • %s - argument je interpretován jako textový řetězec.
  • %x - celé číslo je zformátováno do šestnáctkové soustavy.
  • %X - celé číslo je zformátováno do šestnáctkové soustavy, kde jsou použita velká písmena.

Uveďme si příklad:

Příklad

<?php
printf("Ahoj %s,\nje mi %d let.", 'Petře', 22);

A výsledek:

"Ahoj Petře
je mi 20 let."

Pokud bychom potřebovali naformátovaný řetězec pouze vrátit a ne vytisknout na výstup, použijeme funkci sprintf se stejnými parametry.

Prohazování argumentů

Za znak procenta můžeme ještě uvést n$, kde n označuje n-tý argument funkce. Tedy %2$s označuje, že se má na tuto pozici vložit druhý argument. Takto můžeme argumenty vkládat vícekrát nebo v jiném pořadí, než jsou ve funkci uvedeny.

Zkusme si to:

<?php
printf('Je mi %2$d let %1$s.', 'Petře', 22);

Výstup:

"Je mi 22 let Petře."

Zde je důležité uvést apostrofy, aby nebyly dolary interpretovány jako proměnné.

Jako poslední si ukážeme zformátování čísla na x míst:

<?php
printf('Je mi %03d let.', 22);

Výstup:

Je mi 022 let.

Diagnostický výpis

Následující funkce slouží pouze pro diagnostické účely a na produkčním serveru (tedy tam, kde pojede ostrá verze webu) by se vůbec neměly objevit.

Při ladění aplikace občas potřebujeme zjistit obsah nějaké proměnné. Výpis obyčejným echem nás mnohdy neuspokojí, jelikož např. hodnota null nebude vypsána, stejně tak nepoznáme hodnotu false, true a podobně. Zkusme si vypsat echem různé datové typy:

Příklad

<?php
$a = null;
$b = true;
$c = array(1, 2, 3, 'klic' => 'hodnota');
echo $a, '<br />';
echo $b, '<br />';
echo $c, '<br />';

Výstup:


1
Array

Null se nevypsal vůbec, u true nevíme, zda je to true nebo 1, u pole se vypsala pouze informace, že proměnná je pole. Podívejme se na další funkce pro výpis.

print_r

Print_r vypíše hodnoty v lidsky čitelné podobě. V praxi to znamená, že pole jsou hezky rozepsaná jako klíč => hodnota. Předejme funkci naše původní data:

<?php
$a = null;
$b = true;
$c = array(1, 2, 3, 'klic' => 'hodnota');

print_r($a);
echo('<br />');
print_r($b);
echo('<br />');
print_r($c);
echo('<br />');

Výstup:

1
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [klic] => hodnota
)

Pro výpis polí je funkce opravdu perfektní, bude se nám hodit, jelikož občas je dobré se přesvědčit, že je v poli uloženo opravdu to, co si myslíme. U prvních 2 případů se však výpis nezlepšil.

Pokud chceme, aby funkce svůj výstup pouze vrátila (nikoli vypsala), stačí uvést 2. parametr s hodnotou true.

var_dump

Funkce var_dump vypíše (i vrátí) argument ve formátu, který je lidsky čitelný a který navíc obsahuje datové typy. Předejme funkci opět naše data:

<?php
$a = null;
$b = true;
$c = array(1, 2, 3, 'klic' => 'hodnota');

var_dump($a);
echo('<br />');
var_dump($b);
echo('<br />');
var_dump($c);
echo('<br />');

Výstup:

NULL
bool(true)
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  ["klic"]=>
  string(7) "hodnota"
}

To už je pro programátora velmi přínosné.

die

Jak již název napovídá, funkce die zastaví vykonávání skriptu. Předtím však vypíše své parametry. Nabízí se k použití s funkcí var_dump. Takto můžeme při hledání chyb svůj program jednoduše "krokovat" , umisťovat die(var_dump($pro­menna)) na různá místa programu a zjišťovat, zde jsou v tomto bodě správná data.

Ekvivalentem funkce je metoda nebo konstrukce exit, která má stejné parametry a i dělá to samé.

Die bývá často nesprávně uváděna v učebních materiálech k výpisu chyb. Ideálně by se to mělo řešit pomocí výjimek. I bez nich by se však aplikace neměla takto násilně ukončit, ale chybu nějak elegentně vypsat např. do indexu se šablonou.


 

Všechny články v sekci
Textové řetězce - Český PHP manuál
Článek pro vás napsal David Hartinger
Avatar
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity