Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] 'varchar' == 0
bmL
post 3.08.2008, 15:45:33
Post #1





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Jak w temacie.
  1. <?php
  2. $y_arr = array(array(0, '0'), array(1, '1'), array('vchar', 'varchar'), array(true, 'true'), array(false, 'false'));
  3.  
  4. $x = 'vchar';
  5. echo '<pre>';
  6. foreach ($y_arr as $y)
  7. {
  8. if ($x != $y[0])
  9. print $x . ' != ' . $y[0] . "\t\t".$x . ' != ' . $y[1] .'<br>';
  10. else
  11. print $x . ' == ' . $y[0] . "\t\t".$x . ' == ' . $y[1] . '<br>';
  12.  
  13. if ($x !== $y[0])
  14. print $x . ' !== ' . $y[0] . "\t\t".$x . ' !== ' . $y[1] . '<br>';
  15. else
  16. print $x . ' === ' . $y[0] . "\t\t".$x . ' === ' . $y[1] . '<br>';
  17. echo '<br>';
  18. }
  19. echo '</pre>';
  20. ?>

Output:
Kod
vchar == 0        vchar == 0
vchar !== 0        vchar !== 0

vchar != 1        vchar != 1
vchar !== 1        vchar !== 1

vchar == vchar        vchar == varchar
vchar === vchar        vchar === varchar

vchar == 1        vchar == true
vchar !== 1        vchar !== true

vchar !=         vchar != false
vchar !==         vchar !== false

Czemu tak się dzieje?
Reszte jestem w stanie zrozumieć ale czemu varchar jest równe 0?

EDIT:
no dobra zrobiłem tak:
  1. <?php
  2. $x = 'test';
  3. $x = (int) $x;
  4. // $x = 0;
  5. ?>

Czyli przy sprawdzaniu czy 'varchar' == 0 varchar zostaje prze konwertowany na integer i wtedy dopiero porównany a nie 0 na '0'; ale czemu tak a nie inaczej to ja nie rozumiem tongue.gif
Może ktoś wytłumaczyć? czy nie ma co tłumaczyć bo tak po prostu jest i tyle.?

Ten post edytował bmL 3.08.2008, 15:49:18


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
l0ud
post 3.08.2008, 16:05:15
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Bo żeby zostać porównanym do int musi zostać na niego automatycznie rzutowany tongue.gif Taka właściwość PHP...

A jest to zapewne po to, aby umożliwić np. takie konstrukcje:

  1. <?php
  2. $liczba = $_GET['liczba']; //string pobrany od użytkownika, np. numer akcji jaką ma wykonać
  3.  
  4. if ($liczba == 1) //jakaś tam akcja
  5. else if ($liczba == 2) //inna akcja
  6. ?>


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
bmL
post 3.08.2008, 16:51:02
Post #3





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Rozumiem właśnie nad tym rozkminiałem jak sprawdzić czy zmienna $_GET jest liczbą no i se przypomniałem, że jest is_numeric ale ciągle mnie zastanawiało dla czego tak się dzieje smile.gif
Chociaż właściwie równie dobrze to liczba mogłaby być rzutowana do zmiennej tekstowej.

Dzięki i pozdrawiam
bmL

Ten post edytował bmL 3.08.2008, 16:53:18


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.07.2025 - 02:03