Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] if('0')
kufalo
post 27.11.2011, 00:26:52
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

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


Witam,

Kod
print('0'?true:false);


Czy w PHP cos takiego od zawsze zwracalo false czy moze ostatnio zaszly jakies zmiany? ... A moze to ja mam nieprawidlowe skojarzenia z jezyka JS, gdzie tylko pusty string rzutuje sie na false, a reszta na true.

Ten post edytował kufalo 27.11.2011, 00:27:29
Go to the top of the page
+Quote Post
Crozin
post 27.11.2011, 00:30:45
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


http://www.php.net/manual/en/language.type...boolean.casting
Go to the top of the page
+Quote Post
kufalo
post 27.11.2011, 00:35:33
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

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


no i jasne zgadza sie, FALSE: the empty string, and the string "0"

Czyli dla '0' inaczej rzutowane niz w innych jezykach (np JS)
Go to the top of the page
+Quote Post
szmerak
post 27.11.2011, 02:05:24
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


0 i pusty string - to masz jak null
a null - define("null", 0)

Czyli
  1. <?php
  2. if(null == false)
  3. {
  4. echo "PRAWDA";
  5. }
  6. ?>

Takie coś ci zwróci prawde
  1. <?php
  2. if(null === false)
  3. {
  4. echo "PRAWDA";
  5. }
  6. ?>

ale takie coś już nie przez sprawdzanie typu

Ten post edytował szmerak 27.11.2011, 02:05:56
Go to the top of the page
+Quote Post
wNogachSpisz
post 27.11.2011, 16:35:38
Post #5





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


PHP niestety tak ma.
Mi też to nie pasuje.
Kiedyś nawet o tym pisałem

false != '1'
false != 1
false == 0
false == '0'
false != '00'
false != '0.0'
false != '-1'
Go to the top of the page
+Quote Post
Uriziel01
post 28.11.2011, 11:08:38
Post #6





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Chyba nie rozumiem co w tym dziwnego że '0' == false. Rozumiem że w JS '0' rzutowane jest na kod ASCII znaku, dlatego też jest inne od 'false' ? Wydaje mi się to całkowicie normalne i naturalne podejście. Ale faktycznie widzę że może w pewnych sytuacjach przysporzyć sporo komplikacji.
Ale jeżeli naprawdę nie możesz tego znieść, zawsze możesz użyć:
  1. <?PHP
  2. $val = '0';
  3. if (false == $val AND ord($val) != 48)
  4. {
  5. echo 'prawda';
  6. }
  7. else
  8. {
  9. echo 'fałsz';
  10. }
  11. ?>


Albo wręcz opisać to w funkcje w stylu 'real_value' i voila!

  1. <?PHP
  2. $val = '0';
  3. if (false == real_value($val))
  4. {
  5. echo 'prawda';
  6. }
  7. else
  8. {
  9. echo 'fałsz';
  10. }
  11.  
  12. function real_value($val)
  13. {
  14. if (false == $val AND ord($val) != 48)
  15. {
  16. return false;
  17. }
  18. else
  19. {
  20. return true;
  21. }
  22. }
  23. ?>


Ten post edytował Uriziel01 28.11.2011, 11:11:24
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: 24.06.2025 - 15:33