Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Warunek if - błędny wynik
tolomei
post
Post #1





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Witam.
Znalazłem ten przykład na innej stronie, lecz nie znalazłem tam odpowiedzi.

  1. $a = '987654321123456789987654321123456789';
  2. $b = '987654321123456789876543210012345698';
  3. if($a==$b)
  4. echo 'Równe';
  5. else
  6. echo 'Nie Równe';


Powyższy kod wyświetli napis "Równe".
Dlaczego ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
crocodillo
post
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


Ponieważ przy porównywaniu są interpretowane jako liczby nie tekst, a ze względu że są zbyt duże taki wynik.
w takich przypadkach należy używać ===
Go to the top of the page
+Quote Post
cycofiasz
post
Post #3





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Zadziałało tu rzutowanie typów w php, użyj operatora === który nie zmieni typu zmiennych podczas porównania. Przy == porównuje zmienne jak liczby całkowite a że liczby te są bardzo duże to ich wartość jest ograniczana do maksymalnej wartości danego środowiska.

// Aby się o tym przekonać zrób taki eksperyment:

  1. $a = '987654321123456789987654321123456789';
  2. $b = '987654321123456789876543210012345698';
  3. echo (int) $a ,'<br />',(int) $b;


Ten post edytował cycofiasz 16.08.2011, 20:16:11
Go to the top of the page
+Quote Post
tolomei
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Wszystko jasne (IMG:style_emoticons/default/smile.gif)
Dzięki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:00