Corso php

Tipi di stringhe

Le stringhe sono una serie di caratteri, e fin qui il concetto è piuttosto semplice. Detto questo, ci sono tipi diversi di stringhe che hanno una sintassi e funzionalità leggermente differenti.

Apici singoli

Gli apici singoli vengono usati per denotare una “stringa letterale”. Le stringhe letterali non eseguono il parsing di caratteri speciali o variabili.

Se usi gli apici singoli, puoi inserire il nome di una variabile così: 'qualche $cosa' e vedresti l’output esatto quale $cosa. Se usi gli apici doppi, la stringa cercherebbe di recuperare la variabile $cosa e visualizzerebbe degli errori in caso la variabile non venisse trovata.

<?php
echo 'Questa è la mia stringa, guarda come è bella.';    // non serve interpretare una stringa semplice

/**
 * Output:
 *
 * Questa è la mia stringa, guarda come è bella.
 */

Virgolette

Le virgolette sono il coltellno svizzero delle stringhe. Non solo effettuano il parsing delle variabili come abbiamo detto sopra, ma di tutti i caratteri speciali come \n per la nuova linea, \t per la tabulazione etc.

<?php
echo 'phptherightway è ' . $adjective . '.'     // un esempio con apici singoli che usa concatenamento multiplo per
    . "\n"                                      // variabili e caratteri di escape
    . 'Adoro imparare' . $code . '!';

// contro

echo "phptherightway è $adjective.\n Adoro imparare $code!"    // Invece del concatenamento multiplo, le virgolette
                                                               // ci permettono di creare una stringa interpretata

Gli apici doppi possono contenere variabili; questa si chiama “interpolazione”.

<?php
$juice = 'plum';
echo "I like $juice juice";    // Output: I like plum juice

Quando usi l’interpolazione, capita spesso che il nome di una variabile tocchi un altro carattere. Questo renderà impossibile distinguere il nome della variabile dal carattere letterale.

Per ovviare al problema, racchiudi la variabile in un paio di parentesi graffe.

<?php
$juice = 'prugn';
echo "Ho bevuto del succo fatto con le $juicee";    // $juice non può essere interpetato

// contro

$juice = 'prugn';
echo "Ho bevuto del succo fatto con le {$juice}e";    // $juice verrà interpretato

/**
 * Anche le variabili complesse possono essere racchiuse tra parentesi graffe
 */

$juice = array('mel', 'banan', 'prugn');
echo "Ho bevuto del succo fatto con le {$juice[1]}e";   // $juice[1] verrà interpretato