Piccola domanda di approfondimento

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Girando online ho trovato quest'esempio. Considerato che non è la prima volta che mi capita di vedere una situazione del genere, vorrei capire una cosa in particolare le parentesi graffe a cosa servono??? E cosa sono?

Possono essere usate al posto di ".."??
E' una cosa sicura farlo?

PHP:
$var = 5;

// Inline variable parsing
echo "I'd like {$var} waffles"; // = "I'd like 5 waffles

// String concatenation 
echo "I'd like ".$var." waffles"; // I'd like 5 waffles
Grazie
 
Ultima modifica:

otto9due

Utente Attivo
22 Feb 2014
529
21
28
E se quanto detto sopra funziona.. Perchè in questo caso non funziona? Osservate l'output..

PHP:
<?php

class foo
{
    public $foo;
    public $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo 'My name is "'.$name.'" e {$name} I am printing some $foo->foo.
Now, I am printing some "'.$foo->bar[1].'" e {$foo->bar[1]}.'

?>
Output:
Codice:
My name is "MyName" e {$name} I am printing some $foo->foo. Now, I am printing some "Bar2" e {$foo->bar[1]}.
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Così funziona, probabilmente è una questione di virgolette che vanno messe doppie.
PHP:
<?php

class foo
{
    public $foo;
    public $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo "My name is ".$name." e {$name} I am printing some $foo->foo.
Now, I am printing some ".$foo->bar[1]." e {$foo->bar[1]}."

?>
Output:
Codice:
My name is MyName e MyName I am printing some Foo. Now, I am printing some Bar2 e Bar2.
Ma la domanda rimane sempre di cosa si tratta??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
puoi vedere la differenza tra l'uso degli apici singoli e quelli doppi
PHP:
<?php
$var = 5;//o una stringa
echo 'la variabile è $var <br>';//la variabile è $var
echo "la variabile è $var<br>";//la variabile è 5
echo 'la variabile è $var <br>';//la variabile è $var
echo "la variabile è $var<br>";//la variabile è 5
$var_a['a'] = 5;
$var_a['b'] = "pinco";
//echo 'la variabile è $var_a['a'] <br>';//qui ERRORE: Parse error: syntax error..
//echo "la variabile è $var_a['b']<br>";//qui ERRORE: Parse error: syntax error..
//echo 'la variabile è {$var_a['a']} <br>';//qui ERRORE: Parse error: syntax error..
echo "la variabile è {$var_a['b']}<br>";//la variabile è pinco
//echo 'la variabile è {$var_a['b']}<br>';//qui ERRORE: Parse error: syntax error.. nonostante le {}
echo 'la variabile è {$var_a["b"]}<br>';//la variabile è {$var_a["b"]}
echo "la variabile è".$var_a['b']."<br>";//la variabile è pinco
?>
le {} sono una raffinatezza, comunque è bene usarle quando la variabile è un array associativo, amche se il sistema, per me, migliore è usare ..
puoi divertirti ad usare tutte le combibazioni possibili :)