Zmienne bez typów

0

Słyszałem, że w PHP zmienne nie mają typów i może być traktowana raz jako liczba, a raz jako napis.

Jak odpalisz ponizszy skrypt, to co się pojawi na ekranie?

$A = "2"
$B = "3"
$C = $A + $B
echo "C = "
echo $C

$D = 2
$E = 3
$F = $D + $E
echo "F = "
echo $F

$G = 2
$H = "3"
$I = $G + $H
echo "I = "
echo $I

$J = "2"
$K = 3
$L = $J + $K
echo "L = "
echo $L

Od czego zależy, czy w danym przypadku pojawi się "5" czy "23"? Jak o tym decydować?

0

Wyświetli się błąd, bo nie ma średników. Powinieneś też na forum kod opatrzyć znacznikiem kodu, a w pliku PHP kod powinien być zawarty pomiędzy <?php, a ?>

Po dodaniu średników wyświetli się taki wynik:
C = 5F = 5I = 5L = 5

BTW. zainstaluj sobie PHP i eksperymentuj.

0

To nie tak, że one w ogóle nie mają typów. One mają typ dynamiczny, a można wymusić, by dana zmienna była traktowana w jakiś określony sposób poprzez rzutowanie - odpal na przykład taki kod i popatrz na różnice:

var_dump("3");
var_dump((int)"3");
var_dump(3);

Rzutowanie niejawne, które zachodzi niekiedy jest oczywiście (to PHP w końcu) zdradliwe, dlatego w niektórych wypadkach musisz sam zadbać o odpowiednie typy.

A co do przykładów w Twoim poście to w każdym wypadku będzie 5, bo operator "+" wykonuje rzutowanie ze stringa na inta i nigdy nie zachodzi konkatenacja stringów - do niej służy w PHP operator ".". Przynajmniej takie wyniki mam na PHP 5.2.11 i 5.3.2 ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1