Autor Zpráva
Jan Zabloudil
Profil
Ahoj, jaký je rozdíl mezi = (např. $_SESSION['promenna'] = $_POST['promenna2'];
a == (např. $_SESSION['promenna'] == 'Jmeno';

= - znamená opravdu rovná se a
== přidělujeme hodnotu
nebo je to shodné (res. nějak jinak)?

Děkuju za odpověď
xROAL
Profil
= priraďuje hodnotu vpravo do premennej vľavo.
$a=5;
echo $a; // vypíše 5

== porovnáva hodnoty, či sú rovnaké
1==1 // teda bude true, nakoľko hodnoty sú rovnaké
1==2 // bude false
1=="1" // hodnoty sú rovnaké, takže je to true, aj keď jeden je integer a druhý je string

=== porovnáva hodnoty, či sú identické
1===1 // hodnoty sú identické, rovnakého typu, vyhodí true
1==="1" // hodnoty sú síce rovnaké, ale prvý je integer, druhý je string, takže false

Tak isto je tu ešte jedna vec s == a ===.
0123==123 // true
0123===123 // false
Ak porovnávame čísla s ==, porovnáva sa ich reálna hodnota (a hodnota čísla 0123 je vlastne 123), a preto prvý riadok hodí true.
Porovnávanie s === je však iné, tam sa porovnávané hodnoty/stringy/čokoľvek porovnávajú presne v takom tvare, v akom sú zapísané a teda 0123 nie je to isté čo 123.
juriad
Profil
xROAL:
0123==123 // true
0123===123 // false
POZOR, toto bude obojí false, ale z jiného důvodu. Pokud číslo začíná nulou, jde o zápis v osmičkové soustavě, v tomto případě je hodnota 83 v desítkové soustavě.

Nejspíš jsi chtěl ukázat:
123.0==123 // true
123.0===123 // false
xROAL
Profil
juriad:
Tak sa ospravedlňujem, toto som totiž reálne nikdy neskúšal, zachytil som to len kdesi v komentároch... možno sa to týkalo nejakých starších verzií... teraz som si to odskúšal a vidím že skutočne obe vyhodia false.
Vďaka za opravu ;)
Alphard
Profil
xROAL [#4]:
Verze nemůže mít vliv, jde o osmičkovou soustavu. Ono i o tom 1=="1" // hodnoty sú rovnaké by se dalo polemizovat, raději bych říkal, že po implicitním přetypování jsou operandy stejné.

A Jan Zabloudil by si měl přečíst něco o programování od začátku, takovéto dotazy podle mě nebudou k pochopení problematiky dostatečné.
Tori
Profil
xROAL:
Tam mohly mít vliv uvozovky:
(int) 0123; // 83
(int) "0123"; // 123
xROAL
Profil
Tak vidím, že ani ja som to asi nechápal úplne správne... alebo som resp. nevedel že to takto berie ako osmičkovú sústavu.
Človek sa učí celý život :)
Takže vďaka za opravy a vysvetlenie.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0