Autor Zpráva
okolojsoucí
Profil *
Dobrý den,

rád bych se zeptal jaký rozdíl je v zápisu následující syntexte:
    $promena = "Honza";
    echo "Ahoj, jmenuji se {$promena}.";
    echo "Ahoj, jmenuji se " . $promena;

Ono to pokaždé vypíše Ahoj, jmenuji se Honza.
Jelikož ve svých scriptech používám 1. variantu tak nevím v čem je rozdíl.

Děkuji


Došlo k překliknutí v kategorii prosím moderátora o přesunutí. Děkuji
Moderátor Chamurappi: Přesunuto z Učebnice PHP.
juriad
Profil
Možná bych uvedl ještě jednu variantu:
echo "Ahoj, jmenuji se $promenna.";

Jedná se o speciální syntaxi (podkapitola Variable Parsing), která umožňuje uvnitř řetězce přímo vkládat hodnoty proměnných.
Druhý způsob je obyčejné spojení dvou řetězců (jeden je literál, druhý je reprezentovaný proměnnou).
okolojsoucí
Profil *
Tak že je to vlastně jedno jaká verze se využívá?
Tori
Profil
U prosté proměnné je to IMHO jedno. U čehokoli složitějšího (vícerozměrné pole nebo volání metody/fce) bych se rozhodovala podle subjektivní přehlednosti, čili spíš pro druhou variantu. V některých případech i musíte použít spojení řetězců (např. u výrazů nebo ternárního operátoru).
joe
Profil
A ještě třetí, v PHP ideální volbou je:
echo 'Ahoj, jmenuji se ' . $promena;

V apostrofech se nehledají proměnné.
Borius
Profil
A ještě čtvrtá, rovněž ideální možnost:
echo 'Ahoj, jmenuji se ', $promena;
:-)
Davex
Profil
A za chvíli přijde peta s variantou
printf("Ahoj, jmenuji se %s.", $promena);

okolojsoucí:
Juriadovu variantu považuji pro krátký text jako nejvíce přehlednou. Té se drž. Tvá první varianta se hodí ve složitějších situacích, když přímo za proměnou následují alfanumerické znaky a parser by neuměl rozeznat, kde končí jméno proměnné.

joe:
V apostrofech se nehledají proměnné.
Což se v podstatě hodí pouze tehdy, pokud řetězec obsahuje příliš mnoho znaků " nebo $, které jsme líní escapovat.

Borius:
Což je to samé jako
echo 'Ahoj, jmenuji se ';
echo $promena;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: