Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Parse error: syntax error, unexpected T_IF
Forum PHP.pl > Forum > PHP
danon198901
Witam,
dostaję błąd w tytule tematu. Gdy zrobię sobie coś takiego:

  1. $uzy = isset($_POST['uzy'])?$_POST['uzy']:'';


to wszystko gra i buczy. Ale, gdy rozwinę to w 'rozpisanego' if'a z dodatkowymi sprawdzeniami to dostaję już błąd:

  1. $uzy =
  2. if(isset($_POST['uzy']))
  3. {
  4. if(!is_numeric($_POST['uzy']))
  5. {
  6. echo 'Współrzędne muszą być liczbą!';
  7. }
  8.  
  9. else if($_POST['uzy']<=0)
  10. {
  11. echo 'Współrzędne muszą być liczbą dodatnią!';
  12. }
  13.  
  14. else $_POST['uzy'];
  15. }
  16. else '';


Co dokładnie sknociłem? nerdsmiley.png
Sebek87
Linia 1, 16 i 18. Próbujesz instr. warunkową przypisać do zmiennej? ohmy.gif
  1. if(isset($_POST['uzy']))
  2.  
  3. {
  4.  
  5. if(!is_numeric($_POST['uzy']))
  6.  
  7. {
  8.  
  9. echo 'Współrzędne muszą być liczbą!';
  10.  
  11.  
  12. }
  13.  
  14. if($_POST['uzy']<=0)
  15.  
  16. {
  17.  
  18. echo 'Współrzędne muszą być liczbą dodatnią!';
  19.  
  20.  
  21. }
  22.  
  23. $uzy = $_POST['uzy'];
  24.  
  25. }
danon198901
oczywiście, że nie:)

Instrukcja warunkowa służy tu tylko przypisaniu odpowiedniej wartości do zmiennej, a dokładniej, jeśli zmienna przekazywana z formularza jest ustawiona, jest liczba większą od zera to nastąpić ma przypisanie.

Oczywiście mogę to zrobić nieco inaczej, a mianowicie if(warunek) $uzy = ...; zamiast $uzy = if(warunek)...
Z tym, że nie bardzo wiem co jest źle w kodzie, który pokazałem. W końcu skrócony zapis if działa!

  1. $uzy = isset($_POST['uzy'])?$_POST['uzy']:'';
Sebek87
To pierwsze wyrażenie:

  1. $uzy = isset($_POST['uzy'])?$_POST['uzy']:'';


to trójoperandowy operator warunkowy, który jest częścią składni PHP, dlatego Ci działa - logiczne.

O powyższym wyrażniu możesz przeczytać na http://www.php.net/manual/pl/language.expressions.php

Natomiast wyrażnie drugie, które zacząłeś od:

  1. $uzy =
  2.  
  3. if(isset($_POST['uzy']))
  4.  
  5. {


to już wynik próby poszerzenia funkcjonalności PHP przez Ciebie snitch.gif
danon198901
mhm. Wiesz generalnie zasada działania jest taka sama, z tym, że else if'ów nie można robić. Dlatego zastanawiałem się dlaczego przypisując wartość będącą wynikiem instrukcji warunkowej przy pomocy zwykłego if'a (a nie trójoperandowego) doprowadza do błędu mimo, że logicznie to jest to samo.
Nigdy wcześniej w taki sposób nie przypisywałem zmiennych, ale przykład który gdzieś tam w sieci znalazłem spowodował, że chciałem się dowiedzieć o co tutaj chodzi:)
Sebek87
Cytat
Dlatego zastanawiałem się dlaczego przypisując wartość będącą wynikiem instrukcji warunkowej przy pomocy zwykłego if'a (a nie trójoperandowego) doprowadza do błędu mimo, że logicznie to jest to samo.

Dlatego, że w PHP nie ma takiej składni:
  1. $uzy =
  2.  
  3. if(isset($_POST['uzy']))
  4.  
  5.  
  6.  
  7. {...

Sam widzisz, że wyrzuciło Ci syntax error.
tehaha
Cytat
Dlatego zastanawiałem się dlaczego przypisując wartość będącą wynikiem instrukcji warunkowej przy pomocy zwykłego if'a (a nie trójoperandowego) doprowadza do błędu mimo, że logicznie to jest to samo.
Nie to nie jest to samo. Gdybyś sięgnął do manula, dowiedziałbyś się, że to są 2 całkowicie inne konstrukcje i tylko w nielicznych przypadkach możesz to stosować zamiennie. Twoje zdumienie tym fenomenem wynika z błędnego założenia, że jest to jedna i ta sama konstrukcja w pełnej i skróconej formie co jest nieprawdą. Każdy operator trójargumentowy może zostać zapisany przy pomocy konstrukcji warunkowej if/else, ale nie każda konstrukcja if/else może zostać zastąpiona przez ten operator. Dlatego Twój przykład nie działa.
danon198901
OK dzięki. Temat wyczerpany. Można zamknąćsmile.gif
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.