ugrás a tartalomhoz

Feltételes operátor

iddqd · 2011. Dec. 1. (Cs), 18.35
Sziasztok!
Egy röpke magyarázatra lenne szükségem tanulás közben ha van időtök.
Tehát a feltételes operátor ( ? : ) ha jól értem egy alternatíva az if-else szerkezetre abban az esetben ha a "feltétel"? mindkét esetében szeretnék eredményt kapni. Például egy switch szerkezethez deklarált változóban:

$action = isset( $_GET['action'] ) ? $_GET['action'] : "";
Ha jól értem ezt akkor:

isset( $_GET['action'] ) ?
- ha kapott "utasítást" az lesz az $action ez oké

$_GET['action'] : "";
- ha nem kapott akkor az értéke= "" azaz semmi?? vagy azt jelenti ha nem kapott ("") akkor is legyen értéke de az mi akkor null? bocsi lehet ez nagy hülyeség. :)

tovább menve a kérdésen igy akkor nem lenne értelmezhető?

$action= $_GET['action'];
switch ( $action ) {
  case action1:
    method 1();
    break;
  case action2:
    method2();
    break;
  default:
    defmethod();
}
mert ha nem a case ben szereplő az $action értéke akkor igy is ugy is a default fut nem?

Sorry ha hülyeség de belekavarodtam kicsit!
Köszönöm előre is a válaszotok!
 
1

$action = isset(

Hidvégi Gábor · 2011. Dec. 1. (Cs), 19.40
$action = isset( $_GET['action'] ) ? $_GET['action'] : "";

A php kiértékeli az isset( $_GET['action'] ) -t, ha igaz, akkor a visszatérési értéke a kettőspont bal oldalán lévő kifejezés lesz, ha hamis, akkor pedig a jobb oldalán lévő kifejezés.

A második példád rossz, mert ez egy olyan művelet, aminek visszatérési értéke van.
2

isset

Poetro · 2011. Dec. 1. (Cs), 22.06
Az isset utasítás azt vizsgálja, hogy a változó kapott-e már értéket. Az érték lehet egy üres string, vagy null, vagy 0 vagy bármi más. Ha nem kapott még eddig értéket, akkor nem lesz értéke. Ekkor egy megjegyzést fog dobni a PHP, hogy a változó nem lett beállítva amennyiben megpróbálod használni.
3

Köszönöm

iddqd · 2011. Dec. 1. (Cs), 23.26
Köszönöm a válaszotok!
tehát ha van get-action akkor nyilván ez lesz a változó értéke ha pedig nincs akkor egy üres string ( "" - ebben az esetben )
és akkor ebből adódóan ha jól értem a válaszod, a switch szerkezet pedig warningot adna mert nincs meghatározva a váltózó. Nem próbáltam ki csak elvi kérdés volt arra voltam kiváncsi miétrne lehetne igy.
Kössz szépen világos most már.
4

Javaslok még egy

deejayy · 2011. Dec. 2. (P), 09.45
Javaslok még egy array_key_exists('action', $_GET) ellenőrzést betenni, mert ha bekapcsolod a notice-okat, enélkül üzenetet fog dobni, ha nem lesz az url-ben ?action=
5

Kösz

iddqd · 2011. Dec. 2. (P), 13.28
Leginkább az operátor használata nem volt tiszta, de Gábor megválaszolta. az isset($_GET['action'] a feltétel és az eredmény a ":" jobb és bal oldala adott esetben. És üres stringet kell neki adnom, különben a switch nél definiálatlan változót fogok kapni, ha nincs action.