2016-01-19 20 views

risposta

5

semplice

echo (float)12,3; 

significa che si sta inviando due valori a risuonare come un elenco di parametri separati da virgole. 12 e 3, che echeggiano insieme sembrano 123. Puoi echo centinaia di cose insieme in una sola chiamata, a PHP non importa.

echo (float)"12,3"; 

si sta inviando una stringa"12,3"riecheggiare dopo il cast a un float. Quando viene convertito in float diventa 12 che vedi essere stampato.

+0

Grazie, ora è tutto chiaro. –

2

La differenza è che PHP sta vedendo 12,3 come 12 e 3. PHP rimuove semplicemente il carattere non numerico.

var_dump(12,3); 
int(12) 
int(3) 

"12,3" è una stringa e PHP sta gettando fuori tutto dopo il primo carattere non numerico.

echo (int)"12b3"; // also outputs 12 
1

In php, , è anche un operatore di concatenazione, così 12,3 viene interpretato come 123.

Ma,

"12,3" è una stringa e , viene trattato come carattere, quindi la conversione di stringhe di galleggiare con conseguente 12

+0

Ancora sbagliato. Questo non è il motivo. '12,3' significa che 2 valori vengono inviati a' echo' che può gestire bene. E No, ',' è *** non *** un operatore di concatenazione in PHP –

+0

Ah, infatti ho completamente dimenticato che possiamo fare echo $ var1, $ var2 - questo lo spiega, grazie! @ Hanky ​​웃 Panky - solo per curiosità, qual è la differenza tra l'operatore di concatenazione della virgola (come un punto) e l'invio di due valori separatamente? –

+1

Poiché la virgola non è un operatore di concatenazione, si verificherà un errore di analisi per qualsiasi altro comando. Ad esempio '$ a = 4,5;' genererà un errore di sintassi. La ragione per cui echo è perché echo è un costrutto che può prendere un elenco di valori separati da virgole. –