Pro zápis řetězcú existují tři způsoby:
- Použití apostrofů (single quoted)
- Použití uvozovek (double quoted)
- Heredoc syntaxe
Při volání řetězce uzavřeného do apostrofů, se na výstupu zobrazí přesně to co je do řetězce vloženo, tzn. že nedojde k vypsání hodnot proměnných. Takže script:
<?php
$a = 7;
echo ‚Týden má $a dnů‘;
?>
vypíše text:
Týden má $a dnů
Naproti tomu, pokud použijeme místo apostrofů uvozovky, na výstupu se objeví:
Týden má 7 dnů
Při použití uvozovek nesmíme používat v řetězci znaky $, “ a \, pokud je potřebujeme zapsat musíme před ně umístit zpětné lomítko (backslash). V tabulce jsou tzv. „Escape sekvence“, které lze použít v textu.
Sekvence | Význam |
---|---|
\\ | zpětné lomítko – \ |
\n | nová řádka |
\r | návrat vozíku |
\t | tabulátor |
\“ | uvozovky – „ |
\$ | dolar – $ |
V PHP 4 byl zaveden třetí způsob deklarace proměnné typu string, tzv. heredoc syntaxe. Ta je vhodná pro delší úseky textu, protože nevyžaduje používání escape sekvencí pro některé znaky, ale zároveň umožňuje expanzi proměných.
<?php
$heredoc = <<<EOD
Tento zápis umožňuje vkládání dlouhých textů do proměnných bez nutnosti používat uvozovky nebo apostrofy a zároveň je možné vypisovat hodnoty proměnných a používat escape sekvence jako např. \n.
EOD;
?>
Text je nutné uzavřít mezi sekvenci <<<identifikátor a identifikátor;. Jako identifikátor můžeme použít jakýkoliv sled alfanumerických znaků a podtržítko, ale nesmí začínat číslicí a nesmí být obsažen v textu. Identifikátor musí být umístěn na samostatné řádce.
Konverze řetězců na čísla
Pokud začátek řetězce obsahuje ‚.‘, ‚e‘ nebo ‚E‘ následovaný číslicemi je převeden na typ float, v ostatních případech je konvertován na integer.
Hodnota je odvozena ze začátku řetězce. Pokud řetězec začíná čísly jsou brána jako hodnota řetězce, v ostatních případech má řetězec hodnotu 0. Platné číselné hodnoty mohou obsahovat znaménko, desetinou tečku a exponent (e nebo E) následovaný jednou nebo více číslicemi.
<?php | |
$str = 5 + „12.1“; | //float (17.1) |
$str = 1 + „-1.3e3“; | //float (-1299) |
$str = 1 + „text-5“; | //integer (1) |
$str = „10.0 prasat“ + 1; | //float (11) |
?> |