Lekce 3 - Proměnné a typový systém v PHP

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Instalace Apache, MySQL a PHP na Windows a první PHP skript, jsme si zprovoznili vše potřebné k tomu, abychom v PHP mohli programovat. V dnešním PHP tutoriálu si ukážeme základy syntaxe a práci s proměnnými.

Echo

Zrekapitulujme si ještě příklad z minula, který měl následující podobu:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
            echo("Tento text do stránky vložilo PHP");
        ?>
    </body>
</html>

Již víme, že PHP skript vypadá jako běžná HTML stránka. Jelikož má však stránka příponu .php, může obsahovat části označené značkami (direktivou) <?php a ?>. Zde se může nacházet kód, který na serveru spustí PHP modul. Na toto místo potom vloží výsledek, který kód vygeneroval.

Příkaz echo do stránky vypíše zadaný text. Echo je funkce a za název každé funkce píšeme závorky, do kterých vložíme její vstupní parametry. V echu je parametrem text, který se má vypsat. I kdyby funkce nepotřebovala ke své úloze žádný parametr, musíme tam napsat závorky, v tom případě prázdné. PHP je na funkcích založené a nabízí jich poměrně hodně. Většinu věcí si nemusíme programovat sami, ale prostě zavoláme PHP funkci, která je vykoná. Namísto funkcí se dají používat i objekty, se kterými se zatím zatěžovat nebudeme, ale složitější aplikace bez nich prakticky nelze vytvořit. Na tento seriál navazuje několik dalších, které potom tyto pokročilejší techniky vysvětlují.

Pozn.: Zrovna u funkce echo lze závorky vynechat, ale u většiny jiných funkcí to nelze. Přijde mi přehlednější psát je všude, než je někde mít a někde nemít.

Funkci echo() předáváme v parametru text. V programování se textu říká textový řetězec, anglicky string. Textové řetězce píšeme do uvozovek, ať už jednoduchých nebo dvojitých. Je to z toho důvodu, aby si PHP text nepletlo s ostatními příkazy. Když tedy napíšeme např.:

echo("echo");

PHP ví, že je to druhé echo jen text a nebude si ho všímat (vypíše prostě text echo). Za každým příkazem vždy následuje středník. Příkazy píšeme na samostatné řádky. Syntaxe PHP vychází z céčka, ve kterém je PHP mimochodem naprogramované. Je samozřejmě podobná i dalším jazykům, co z céčka vycházejí, např. Javě nebo C# .NET. Pokud tyto jazyky znáte, budete mít výhodu. Pokud ne, vše si zde vysvětlíme od začátku.

Ve stránce, kterou vidí uživatel, již není po PHP ani památky. Obsahuje jen to, co PHP vygenerovalo. Uživatel se tedy ke zdrojovému kódu v PHP nikdy nedostane. HTML stránka, kterou vygeneroval skript výše, vypadá takto:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
            Tento text do stránky vložilo PHP
    </body>
</html>

PHP tedy HTML nijak nenahrazuje, je to pouze prostředek k jeho generování. Obvykle máme nějakou HTML kostru, do které dynamicky vkládáme obsah, který není předem známý a který se mění (např. komentáře v knize návštěv). Obsah se často načítá z nějaké databáze.

Příklad výše bychom však dokázali udělat i bez PHP, že? Poďme do skriptu vložit nějakou dynamickou funkčnost.

Proměnné

Slovo proměnná byste měli znát ze školy. Pro neprogramátory je to místo v paměti, kam si můžeme ukládat data a potom s nimi pracovat. Proměnné pojmenováváme libovolným názvem bez mezer a diakritiky. Před jejich název píšeme vždy dolar ($).

Uvnitř PHP části stránky si vytvoříme několik proměnných a naplníme je různými hodnotami:

$pozdrav = "Ahoj";
$vek = 15;
$pi = 3.14;

Všimněte si, že se proměnné vždy jmenují podle toho, co je v nich uloženo. Není nic horšího, než uložit např. věk do proměnné $a, pozdrav do $b a podobně. Ve svých skriptech byste se za chvíli nevyznali. Naopak pokud máte 2 čísla a pojmenujete je $a a $b, je to v pořádku. Obsah nějaké proměnné můžeme samozřejmě jednoduše vypsat pomocí funkce echo. Upravme náš kód:

$pozdrav = "Ahoj";
$vek = 15;
$pi = 3.14;
echo($pozdrav);
echo('<br />');
echo($vek);
echo('<br />');
echo($pi);
echo('<br />');

Měli byste vidět následující výstup:

Your page
localhost/Hello­World

Určitě jste si všimli, že do uvozovek dáváme pouze text, čísla a proměnné píšeme tak, jak jsou.

Datové typy

Každá proměnná je určitého typu, těmto typům se říká datové. Ve skriptu jsme si vytvořili proměnné třech základních datových typů. Pozdrav je typu string, o tom jsme si již říkali. $vek je typu int, což je celé číslo. $pi je potom typu double (někdy můžete narazit i na typ float, v PHP označují oba typy to samé, tedy desetinné číslo).

PHP je tzv. dynamicky typovaný jazyk. To znamená, že datové typy nemusíme u proměnných zadávat (jako třeba v jazyce C), ale PHP si typ podle obsahu proměnné nastaví samo. Mezi typy také PHP samo převádí. Teoreticky nemusíme ani vědět o tom, že proměnná nějaký datový typ má, prakticky bychom se však někdy mohli docela divit, když by PHP samo převedlo něco tak, jak jsme to nečekali.

Sčítání čísel a spojování řetězců

V PHP můžeme mezi čísly samozřejmě používat základní početní operace, kulaté závorky a ostatní proměnné:

$r = 10;
$obsah = 3.14 * $r * $r;
echo("Obsah kruhu je $obsah cm<sup>2</sup>");

Výstup:

Your page
localhost

Kód výše vytvoří proměnnou $r s hodnotou 10. Tato hodnota se využije při zadávání obsahu proměnné $obsah. Proměnná $obsah se vypíše spolu s dalším textem funkcí echo.

Vidíte, že do řetězce můžeme jednoduše vložit i obsah proměnné. Funguje to však pouze s dvojitými uvozovkami, s jednoduchými by se vypsal řetězec tak, jak je napsaný a proměnná by se do něj nevložila. Horního indexu u čtverečních centimetrů jsme dosáhli pomocí HTML tagu <sup>. Poloměr by se v reálné aplikaci samozřejmě zadal nějakým formulářem, aby měla aplikace nějaký význam. To ale zatím neumíme.

Již jsme si říkali, že PHP samo převádí mezi různými datovými typy. Vyzkoušejme si to:

$a = 10;
$b = "20";
$c = $a + $b;
echo($c);

Výstupem bude:

Your page
localhost

Ačkoli je proměnná $b zadána jako text, PHP ji převede na číslo jakmile zjistí, že jí chceme k něčemu přičíst. Stejného výsledku bychom dokonce dosáhli i s tímto zadáním:

$a = 10;
$b = "20 let mi je";
$c = $a + $b;
echo($c);

To už je trochu divoké a rozhodně to nebudeme dělat.

Stejně, jako můžeme sčítat čísla, můžeme spojovat textové řetězce. Cizím slovem se tomu říká konkatenace (anglicky concatenation nebo zkráceně concat). Slouží k tomu operátor tečka (.):

$a = 10;
$b = 20;
$veta = "Ahoj, je mi";

$soucet = $a + $b;
$spojeni = $a . $b;
echo("Zde je součet čísel A a B: $soucet");
echo('<br />');
echo("Zde je spojení řetězců A a B: $spojeni");
echo('<br />');
echo('A ještě jeden příklad: ');
echo($veta . " " . $b . " let.");

Výstup:

Your page
localhost

Z výstupu programu vidíme rozdíl mezi sčítáním čísel a spojováním řetězců. Všimněte si, že jsme stále v HTML, pokud chceme nový řádek, vložíme do stránky prostě HTML tag pro odřádkování.

Dnešní příklady máte ke stažení v příloze článku a já se na vás těším v příští lekci, Textové řetězce podruhé a pole v PHP, kdy si uvedeme pole.


 

Stáhnout

Staženo 976x (710 B)
Aplikace je včetně zdrojových kódů v jazyce php

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
72 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Předchozí článek
Instalace Apache, MySQL a PHP na Windows a první PHP skript
Všechny články v sekci
Základní konstrukce jazyka PHP
Miniatura
Následující článek
Textové řetězce podruhé a pole v PHP
Aktivity (11)

 

 

Komentáře

Avatar
Kit
Redaktor
Avatar
Kit:29.9.2013 21:01

Poslední příklad se dá zapsat ještě o něco jednodušeji bez uvozovek, apostrofů a další bižuterie.

$a = 10;
$b = 20;
$veta = "Ahoj, je mi";

$soucet = $a + $b;
$spojeni = $a . $b;

echo <<<EOT
Zde je součet čísel A a B: $soucet<br />
Zde je spojení řetězců A a B: $spojeni<br />
A ještě jeden příklad: $veta $b let.
EOT;

Funguje to nejen s primitivními proměnnými, ale i s objekty.

Odpovědět  +1 29.9.2013 21:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jencek Julínek
Redaktor
Avatar
Jencek Julínek:30.10.2013 13:56

Vždy když to zkusím spustit tak mi to vypíše: "Chyba při načítání stránky", nevíte co s tím ?

 
Odpovědět 30.10.2013 13:56
Avatar
Jencek Julínek
Redaktor
Avatar
Odpovídá na Jencek Julínek
Jencek Julínek:30.10.2013 14:14

Omlouvám se, už se mi to povedlo.

 
Odpovědět 30.10.2013 14:14
Avatar
mkub
Redaktor
Avatar
mkub:14.11.2013 13:23

ak sa nemylim, tak echo sa da pisat aj bez zatvoriek napr. takto:

echo "text"
 
Odpovědět 14.11.2013 13:23
Avatar
Kit
Redaktor
Avatar
Odpovídá na mkub
Kit:14.11.2013 13:45

Příkazy echo, include, require a možná ještě pár dalších se dají zapsat jako funkce, tedy parametry jsou v závorkách. V poslední době se všeobecně dává přednost funkcím, protože to zjednodušuje syntaxi jazyka.

Předpokládám, že v některé z dalších verzí PHP bude echo jako příkaz označeno za deprecated a v některé z následujících verzí odstraněno.

Odpovědět 14.11.2013 13:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
relycanx
Člen
Avatar
relycanx:15.11.2013 21:50

u 51. řádku, na začátku, máš napsáno "čtevečních" :(

 
Odpovědět 15.11.2013 21:50
Avatar
Kit
Redaktor
Avatar
Kit:15.11.2013 21:58

Do stringů je možné vkládat nejen primitivní datové typy, ale i objekty.

$obj = new Pozdrav("Ahoj", 15);
echo("A ještě jeden příklad: $obj");
Odpovědět 15.11.2013 21:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
relycanx
Člen
Avatar
Odpovídá na Kit
relycanx:15.11.2013 22:15

jasný no, to mi trochu připomnělo jQuery :)

 
Odpovědět 15.11.2013 22:15
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na relycanx
David Čápka:19.11.2013 12:16

Dík, opraveno.

Odpovědět 19.11.2013 12:16
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na Kit
Libor Šimo (libcosenior):8.12.2013 12:26

Kit, tvoj príklad mi píše chybu. Niečo nebude v poriadku so syntaxom.
Za príkazom: EOT; to vyzerá tak, že reťazec pokračuje až do konca a to je blbosť.

Odpovědět 8.12.2013 12:26
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):8.12.2013 12:26

Zabudol som vložiť obrázok:

Odpovědět 8.12.2013 12:26
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
MrPabloz
Člen
Avatar
MrPabloz:8.12.2013 12:28

echo $promenna."tex­t".$promenna."tex­t"; skus to tímhle stylem :) (ta tečka je spojení řetězců :) )

Odpovědět 8.12.2013 12:28
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Odpovídá na MrPabloz
Libor Šimo (libcosenior):8.12.2013 12:32

To je mi jasné, ale ja riešim príklad, ktorý do komentárov pridal kit. Pozri si staršie komentáre, je úplne prvý.

Odpovědět 8.12.2013 12:32
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:8.12.2013 12:34

To koncové slovo musí začínat na 1. pozici na řádku - nesmí před ním být žádné mezery ani taby. Doporučuji, aby ten text nebyl vůbec odsazen - všechny mezery jsou významné.

V daném případě bych neodsazoval ani jeden řádek uvedeného PHP, protože k tomu není vůbec žádný důvod.

Odpovědět 8.12.2013 12:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na MrPabloz
Kit:8.12.2013 12:36

Tečková notace mi docela vadí, protože je nepřehledná a blbě se v ní kombinují uvozovky a apostrofy. Heredoc to řeší.

Odpovědět 8.12.2013 12:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Libor Šimo (libcosenior):8.12.2013 12:36

Diky, to by ma nenapadlo ani pri mučení. :D

Odpovědět 8.12.2013 12:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:8.12.2013 12:38

Občas je dobré si přečíst dokumentaci :)

Odpovědět 8.12.2013 12:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):8.12.2013 12:39

Ešte pridám obrázok opraveného kódu pre ilustráciu:

Odpovědět  +1 8.12.2013 12:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Kit:8.12.2013 12:45

Myslím, že by přehlednosti neubralo ani zrušení odsazení <?php a ?>.

Obecně se PHP a HTML nemá pokud možno míchat. To tvoje vypadá ještě celkem dobře, ale viděl jsem pár exemplárních hloupostí typu

<p><?php echo $odstavec;?></p>

nebo v "lepším" případě

<p><?= $odstavec ?></p>

Takovým zápisům se vyhýbám velkým obloukem.

Odpovědět 8.12.2013 12:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Libor Šimo (libcosenior):8.12.2013 12:53

OK, budem si to pamätať. Díky.

Odpovědět 8.12.2013 12:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:21.12.2013 11:14

jj dobrý návod jenom jsem se chtěl zeptat proč se ten tag
musí dávat do uvozovek ?

 
Odpovědět 21.12.2013 11:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na studnicka.ji
Kit:21.12.2013 11:25

Protože ten skript je v PHP, ale ten tag patří do HTML.

Odpovědět 21.12.2013 11:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:21.12.2013 18:59

jj už jsem to pochopil PHP řekne že se tam má přidat text a html si to vezme za svůj tak

 
Odpovědět 21.12.2013 18:59
Avatar
davidek.vaclavik:2.1.2014 18:51

Ahoj, chtěl jsem se zeptat proč mi to localhost/hello­world nejnade?
Píše to

Objekt nenalezen!

Požadované URL nebylo na tomto serveru nalezeno. Pokud jste zadal(a) URL ručně, zkontrolujte, prosím, zda jste zadal(a) URL správně, a zkuste to znovu.

Pokud si myslíte, že toto je chyba serveru, kontaktujte, prosím, webmastera.

Error 404

localhost
Apache/2.4.7 (Win32) OpenSSL/0.9.8y PHP/5.4.22

Nevím co s tím:/
Poradí mi někdo?

 
Odpovědět 2.1.2014 18:51
Avatar

Člen
Avatar
:2.1.2014 19:01

Skus do adresy přidat .php -> localhost/hello­world.php pokud je to tedy ten soubor.

 
Odpovědět 2.1.2014 19:01
Avatar
smexhy
Člen
Avatar
smexhy:12.2.2014 12:27

Výborný návod! Práve začínam s PHP pracovať a nejakú dobu tu pobudnem aby som sa naučil ako PHP tak aj ostatné jazyky. :) Dúfam, že sa to nejak naučím a hádam mi to pôjde keď zatiaľ je všetko pozitívne ;)

 
Odpovědět 12.2.2014 12:27
Avatar
husakpetr93
Člen
Avatar
husakpetr93:2.7.2014 17:45

Echo je funkce
Určitě? Když jsem brouzdal po stránkách dokumentace PHP, tak u echa jsem našel:
echo is not actually a function (it is a language construct)
Tak jak tedy? :`

 
Odpovědět 2.7.2014 17:45
Avatar
jannes
Člen
Avatar
Odpovídá na husakpetr93
jannes:8.8.2014 19:16

echo nie je funkcia ale jazykový konstrukt za ktorým sa nepíšu zátvorky.
podobne ako print, exit, die, include, reguire.

 
Odpovědět  +3 8.8.2014 19:16
Avatar
Branislav Ház:30.10.2014 22:05

Prosim vas vie mi niekdo vysvetlit rozdiel medzi:

echo "nieco
\n";
a
echo "nieco"
;
??
Samozrejme je to v nejakom cykle.

Stretol som sa s tym v niektorych knihach a nevidim v tom zmysel, kedze vystup je taky isty.

Editováno 30.10.2014 22:08
 
Odpovědět 30.10.2014 22:05
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Branislav Ház
Matúš Petrofčík:30.10.2014 22:11

táto zmena sa neprejavuje keď si prehliadaš web, ale keď sa potom pozeráš do jeho kódu.

echo "nieco\n"; echo "nieco\n";

vygeneruje kod

1 nieco
2 nieco
3
echo "nieco"; echo "nieco";

vygeneruje kod

1 nieconieco

ale v na stránke to bude vyzerať rovnako, text nieconieco

Editováno 30.10.2014 22:12
Odpovědět 30.10.2014 22:11
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Branislav Ház:30.10.2014 22:11

osprevdlnujem sa davam opravu, nakolko nemozem editovat

echo ("nieco <br />");
echo("nieco <br />\n");
 
Odpovědět 30.10.2014 22:11
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Branislav Ház
Matúš Petrofčík:30.10.2014 22:14

to je to isté ako som napísal vyššie ;) ten znak \n znamená nový riadok, ale tento nový riadok uvidíš len ak si dáš zobraziť zdrojový kód stránky, na výsledne zobrazenie stránky to nemá vplyv. Tam ak chceš dať nový riadok, musíš použiť tag

<br />

alebo

<br>

čo je tiež správne ak sa jedná o html, ale ja používam tú prvú variantu :)

Editováno 30.10.2014 22:16
Odpovědět 30.10.2014 22:14
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Branislav Ház:30.10.2014 22:22

aha uz rozumiem, takze

\n

je len kvoli semantike...

ale ako tak kukam na zdrojovy kod stranky, tak je uplne narusena stromova struktura, neda sa to nejako osetrit?

vypis z cyklu:

<body>
nieco
nieco
nieco
</body>

ale ja by som ocenil keby to bolo

<body>
   nieco
   nieco
   nieco
</body>
 
Odpovědět 30.10.2014 22:22
Avatar
Odpovídá na Branislav Ház
Martin Konečný (pavelco1998):30.10.2014 22:29

Teoreticky dá, prakticky je to obvykle zbytečný a akorát by to přidělalo práci se zjištěním, jak přesně se má daný výstup odsadit.

Odpovědět 30.10.2014 22:29
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Branislav Ház
Matúš Petrofčík:30.10.2014 22:29

môžeš použiť podobným spôsobom \t ktorý pridá tabulátor
edit: ale ako písal vyššie Martin Konečný moc to význam nemá a len si pridáš zbytočnej práce, ale ak si perfekcionalista tak prečo nie :D

príklad:

echo("\n<body>");
echo("\n\tnieco 1");
echo("\n\tnieco 2");
echo("\n\tnieco 3");
echo("\n</body>");
<body>
    nieco 1
    nieco 2
    nieco 3
</body>

v jednom riadku:

echo("\n<body>\n\tnieco 1\n\tnieco 2\n\tnieco 3\n</body>");

cyklom for:

echo("\n<body>");
for($i=1; $i<4; $i++) echo("\n\tnieco $i");
echo("\n</body>");

ale to už prebieham, len pre motiváciu :D

Editováno 30.10.2014 22:31
Odpovědět 30.10.2014 22:29
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Branislav Ház:30.10.2014 22:32

rozumiet rozumiem, ale pouzitelnost -1 :)

takze bez tabulatorovania, moja pedantnost musi dat kompromis,

thanks

 
Odpovědět  +1 30.10.2014 22:32
Avatar
patrikbraborec:21.7.2015 11:40

Dobrý tutoriál! :-)

Odpovědět 21.7.2015 11:40
To nejcennější, co všichni máme, je náš čas.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Rasťo Suchovský:22.1.2016 22:36

Libor Šimo, echo <<<EOT, nefunguje to vôbec, stále berie zvyšok kódu ako text. Nič som neodsádzal písal som riadky, za každým riadkom som šupol Enter.
Píšem v NetBeans 8.1.
Nepochopil som syntax, môže niekto vysvetliť, prosím? Vďaka.

 
Odpovědět 22.1.2016 22:36
Avatar
Odpovídá na Rasťo Suchovský
Neaktivní uživatel:22.1.2016 22:39

U heredocu (<<<EOT) je nutné terminátor heredocu umístit s nulovým odsazením na nový řádek :

<?php
$hereDoc = <<<EOT
Text, který může obsahovat naprosto cokoliv.
EOT; // Toto je ta důležitá značka. I když je heredoc ve funkci, nesmí být odsazená a musí být na novém řádku zakončeným středníkem
Odpovědět 22.1.2016 22:39
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Rasťo Suchovský:22.1.2016 22:48

Oh, díky, už som na to prišiel, díky. Si moc rýchly :D
Ono sa vyplatí čítať s porozumením, je to tu napísané, ale som to prehliadol. ;)

 
Odpovědět 22.1.2016 22:48
Avatar
Jaroslav Janik:27.5.2016 9:55

Ahoj, jaky je rozdil mezi " " a ' ' ? Viz:

echo("Zde je spojeni retezcu A a B: $spojeni");
echo('A jeste jeden priklad: ');

Diky za vysvetleni :)

Odpovědět 27.5.2016 9:55
There is always a way,
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Jaroslav Janik
mayo505:27.5.2016 10:23

Rozdiel je iba ten, že v dvojitých úvodzovkách môžeš použiť nejaké srandy ako napríklad premenné a keď nechceš tak si to musíš escapovať. V jednoduchých nemusíš okrem ' a \ escapovať nič, všetko čo je vo vnútri je brané ako čistý text

viac tu napr.
http://stackoverflow.com/…rings-in-php

 
Odpovědět 27.5.2016 10:23
Avatar
Odpovídá na mayo505
Jaroslav Janik:27.5.2016 10:29

Diky moc, koukal jsem ze vysvetleni bylo hned v dalsim clanku :)

Odpovědět 27.5.2016 10:29
There is always a way,
Avatar
michal Čepelák:10.9.2016 17:52

Zdravím,
zkouším tento tutoriál ale při vytváření příkladu s proměnnýma mi nechce fungovat proměnná $obsah která je vložená v echo
takhle to mám napsáno:
<!doctype html>
<html>
<head>
<meta countent="tex­t/html; charset="utf-8">
<title>Dokument bez názvu</title>
</head>

<body>
<?php
$r = 10;
$obsah = 3.14 * $r * $r;
echo("Obsah kruju je $obsah cm2");
echo("jak $obsah ");
?>
</body>
</html>

a nevím co s tím :( není zapotřebí na toto nějak nastavit apache server?

Děkuji moc za radu.

 
Odpovědět 10.9.2016 17:52
Avatar
Odpovídá na michal Čepelák
michal Čepelák:10.9.2016 18:03

Zdravím,
zkouším tento tutoriál ale při vytváření příkladu s proměnnýma mi nechce fungovat proměnná $obsah která je vložená v echo
takhle to mám napsáno:
<!doctype html>
<html>
<head>
<meta countent="tex­t/html; charset="utf-8">
<title>Dokument bez názvu</title>
</head>

<body>
<?php
$r = 10;
$obsah = 3.14 * $r * $r;
echo("Obsah kruju je $obsah cm2");
echo("jak $obsah ");
?>
</body>
</html>

a nevím co s tím :( není zapotřebí na toto nějak nastavit apache server?

Děkuji moc za radu.

Už to funguje neaktualizoval jsem data na serveru, omlouvám se.

 
Odpovědět 10.9.2016 18:03
Avatar
Odpovídá na michal Čepelák
Martin McDermot:21.11.2016 8:47

Mě to funguje v poho co ten zápis přepsat $obsah = 3.14 * $r * $r;
jako $obsah = $r * $r *$pi;
a samozřejmě předtím si nadefinovat proměnou $pi = 3.14;

 
Odpovědět 21.11.2016 8:47
Avatar
Zuzana Zahradnickova:28.1.2017 16:44

Nevíte proč se mi nevypíše 30, ale jen $a = 10; $b = "20"; $c = $a + $b; echo($c); Něco dělám špatně a nevím co :o((

 
Odpovědět 28.1.2017 16:44
Avatar
Odpovídá na Zuzana Zahradnickova
Marek Chalupa:28.1.2017 17:52

Nevíme, možná kód by bylo super doložit ;-)

 
Odpovědět 28.1.2017 17:52
Avatar
Michal Pavlíček:15.4.2017 14:20

Prosím o pomoc, jaká je zkratka pro tyhle uvozovky: '', nikde jsem to nenašel, díky za odpověď.

 
Odpovědět 15.4.2017 14:20
Avatar
BluPri
Člen
Avatar
Odpovídá na Michal Pavlíček
BluPri:17.4.2017 22:55

Pravděpodobně, jsi to už zjistil, ale je to shift + ta klávesa o políčko naprava od L. :-)

 
Odpovědět 17.4.2017 22:55
Avatar
Tomáš Janda:14.8.2017 7:15

Zdravím, jsem v tomto oboru úplný začátečník a nevím si rady s tím proč to nechce běžet:

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php

$a = 10;
$b = 20;
$veta = "Ahoj, je mi";

$soucet = $a + $b;
$spojeni = $a . $b;

$hereDoc = <<<EOT
Zde je součet čísel A a B: $soucet

Zde je spojení řetězců A a B: $spojeni

A ještě jeden příklad: $veta $b let.
EOT;

?>
</body>
</html>

Když chci vyjet náhled jak to vypadá na serveru, tak mi to hodí tuto hlášku:
Parse error: syntax error, unexpected end of file in C:\xampp\htdoc­s\HelloWorld\in­dex.php on line 31

Odpovědět 14.8.2017 7:15
Trpělivost-vytrvalost-pokora
Avatar
wartkor
Člen
Avatar
wartkor:12.12.2017 19:27

Ahoj mám takový menší problem když chci abz mi to ukazovalo jaký je den a měsíc. Ale mě to podle mého kódu nefunguje pošlete mi prosím správný kód předem děkuji. PS můj kód: <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
echo("<?php

$mesice = array('leden', 'únor', 'březen', 'duben', 'květen', 'červen',
'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
$den = date('j');
$mesic = date('m');
$mesicSlovy = $mesice[$mesic - 1];
$rok = date('Y');
echo("Ahoj, dnes je $den. $mesicSlovy $rok");

?>");
?>
</body>
</html>

Odpovědět 12.12.2017 19:27
Káždý jednou začal a neuspěl hned na poprvé
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:13.12.2017 15:02

Osobně si myslím že chyba bude v tom jak to vypisuješ:

echo("Ahoj, dnes je $den. $mesicSlovy $rok");

Dáváš tam do stringu proměnné což podle mě nemůže fungovat. String (řetězec) bych rozdělil resp. spojoval s proměnýma:

echo("Ahoj, dnes je ".$den.". ".$mesicSlovy." ".$rok");

Myslím že do stringu jsou vkládat proměnné ještě tímto způsobem ale za to ruku do ohně nedám:

echo("Ahoj, dnes je {$den}. {$mesicSlovy} {$rok}");
 
Odpovědět 13.12.2017 15:02
Avatar
Peter Sciranka
Redaktor
Avatar
Odpovídá na wartkor
Peter Sciranka:13.12.2017 15:19

Ahoj, uvediem len php ako má byť:

<?php
$mesice = array('leden', 'únor', 'březen', 'duben', 'květen', 'červen',
'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
$den = date('j');
$mesic = date('m');
$mesicSlovy = $mesice[$mesic - 1];
$rok = date('Y');
echo("Ahoj, dnes je $den. $mesicSlovy $rok");
?>

Ty tam máš ešte naviac za prvým php echo a ďalšie php, to robí problém. Daj vedieť, či som pomohl :)

Odpovědět 13.12.2017 15:19
Act as if it was Impossible to Fail
Avatar
wartkor
Člen
Avatar
Odpovídá na Peter Sciranka
wartkor:14.12.2017 16:17

Mě ani ten tvůj kód nefunguje skus poslat celý kód

Odpovědět 14.12.2017 16:17
Káždý jednou začal a neuspěl hned na poprvé
Avatar
Peter Sciranka
Redaktor
Avatar
Odpovídá na wartkor
Peter Sciranka:14.12.2017 16:24

Na prianie posielam celý kód :)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>PHP skúśka</title>
</head>
<body>
<?php
$mesice = array('leden', 'únor', 'březen', 'duben', 'květen', 'červen',
'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
$den = date('j');
$mesic = date('m');
$mesicSlovy = $mesice[$mesic - 1];
$rok = date('Y');
echo("Ahoj, dnes je $den. $mesicSlovy $rok");
?>
</body>
</html>

Mne to funguje. Ešte skontrolu či súbor máš uložený ako index.php, dôležitá je prípona (.php).
Iné php súbory ti inak fungujú v poriadku?

Editováno 14.12.2017 16:27
Odpovědět 14.12.2017 16:24
Act as if it was Impossible to Fail
Avatar
Lasvit
Člen
Avatar
Lasvit:15.12.2017 9:38

Hodilo by se vědět, proč ti nefunguje ;)

 
Odpovědět 15.12.2017 9:38
Avatar
Milan Marek
Člen
Avatar
Milan Marek:23.2.2018 23:00

Tome, když to co chceš vypsat na sklo, tak to musíš dát do echa. Text do dvojtých " " nebo jednotných uvozovek ' ' čísla nemusíš a na konci funkce musíš dát středník ; Jak bylo nahoře ještě napsáno, tak hodnota funkce se dává do kulatých závorek () a u echa tam být nemusí, přesto jsem ti je tam dal.
Programování je jako když čteš nějaký návod a musíš přitom tak i přemýšlet. Čte se to z vrchu dolů.

<?php
$a = 10;
$b = 20;
$veta = "Ahoj, je mi";

$soucet = $a + $b;
$spojeni = $a . $b;

echo ("Zde je součet čísel A a B: $soucet
");

echo ("Zde je spojení řetězců A a B: $spojeni
");

echo ("A ještě jeden příklad: $veta $b let.
");
?>

 
Odpovědět 23.2.2018 23:00
Avatar
Radek Kopřiva:18.3.2018 21:48

Skvělý pochopitelný návod. Díky.

 
Odpovědět 18.3.2018 21:48
Avatar
Marty
Člen
Avatar
Marty:4.10.2018 21:46

Na HTML i PHP jsem dřív používal PSPad. A i když mi nezobrazoval chyby, dělalo se mi v něm dobře. Zrovna jsem z Javy přešel na PHP, takže jsem v NetBeansu jako doma, ale hned ze začátku mi tam nevyhovuje pár věcí.

Když jsem v PSPadu vložil do stránky obrázek, automaticky za mě vyplnil "povinné" atributy, aby byla stránka validní. V NetBeansu mi tohle dost chybí, je s tím pak práce. Navážu tím na další problém, když vložím tag <a> a do něj atribut target, sice se mi jako možný atribut zobrazí, ale pokud bych nevěděl, co může obsahovat (např. "_blank"), tak si to musím najít na netu, protože mi těch 5 možnosti nenabídne. Jak to?

Docela mě překvapuje, že tenhle nešvar je tam v takové (zdá se) vyspělé verzi. Zkoušel jsem i PhpStorm, ale to už mi ten NetBeans vyhovuje víc.
Vypadá to, že nějaký čas s tím budu muset bojovat, nebo zkrátka budu psát v PSPadu a na kontrolu to hodím NetBeansu.

Editováno 4.10.2018 21:47
 
Odpovědět 4.10.2018 21:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 61 zpráv z 61.