2016-01-19 10 views

Odpowiedz

5

Proste

echo (float)12,3; 

Środki wysyłasz dwie wartości echo jako rozdzielana przecinkami lista parametrów. 12 i 3, które rozbrzmiały razem, wyglądając jak 123. Możesz wysłuchać setek rzeczy w jednym wywołaniu, PHP nie ma nic przeciwko.

echo (float)"12,3"; 

Ty wysyłasz ciąg"12,3" echo po rzucając go na float. Po konwersji do postaci pływającej staje się 12, które widzisz drukowane.

+0

Dziękuję, wszystko jest teraz jasne. –

2

Różnica polega na tym, że PHP widzi 12,3 jako 12 i 3. PHP po prostu usuwa znak nieliczbowy.

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

"12,3" jest ciągiem i PHP rzuca się wszystkiego po pierwszym charakterze non-numerycznej.

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

php, , jest operatorem konkatenacji, tak 12,3 jest interpretowane jako 123.

Ale

"12,3" jest ciągiem i , jest traktowany jako znak, więc konwersja ciąg do pływaka powoduje 12

+0

Znów źle. To nie jest powód. '12,3' oznacza, że ​​2 wartości są wysyłane do' echa', które może obsłużyć. I nie, ',' jest *** nie *** jest operatorem konkatenacji w PHP –

+0

Ahh, rzeczywiście całkowicie zapomniałem, że możemy wykonać echo $ var1, $ var2 - to wyjaśnia, dziękuję! @Hanky ​​웃 Panky - tylko z ciekawości, jaka jest różnica między przecinkiem będącym operatorem konkatenacji (jak kropka) i wysyłaniem dwóch wartości osobno? –

+1

Ponieważ przecinek nie jest operatorem konkatenacji, spowoduje to błąd analizy dla dowolnego innego polecenia. Na przykład '$ a = 4,5;' wygeneruje błąd składni. Powodem, dla którego echo jest w porządku, jest echo, ponieważ echo jest konstrukcją, która może przyjmować rozdzielaną przecinkami listę wartości. –