Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] 'varchar' == 0
Forum PHP.pl > Forum > Przedszkole
bmL
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.?
l0ud
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. ?>
bmL
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.