2009-08-14 44 views

Respuesta

113

Este es el PHP ternary operator (también conocido como un operador condicional) - si el primer operando se evalúe como verdadera, se evalúan como segundo operando, de lo evalúe como tercer operando.

Piense en ello como una declaración "si" que puede usar en expresiones. Puede ser muy útil para realizar tareas concisas que dependen de alguna condición, p.

$param = isset($_GET['param']) ? $_GET['param'] : 'default'; 

También hay una versión abreviada de esto (en PHP 5.3 en adelante). Puedes dejar fuera el operando medio. El operador evaluará como el primer operando si es verdadero, y el tercer operando de lo contrario. Por ejemplo:

$result = $x ?: 'default'; 

Vale la pena mencionar que el código de seguridad cuando se utiliza es decir, $ _GET o $ _POST variables lanzará aviso índice indefinido y para evitar que tenemos que utilizar una versión más larga, con isset o a null coalescing operator que es introducido en PHP7:

$param = $_GET['param'] ?? 'default'; 
+12

Desde PHP 5.3, también es posible omitir la parte central del operador ternario. La expresión 'expr1?: Expr3' devuelve' expr1' si 'expr1' se evalúa como TRUE, y' expr3' de lo contrario. – Chandrew

+0

Buen punto, voy a actualizar ... –

14

Es la forma ternaria del operador if-else. La declaración anterior, básicamente, dice así:

if ($add_review) then { 
    return FALSE; //$add_review evaluated as True 
} else { 
    return $arg //$add_review evaluated as False 
} 

ver aquí para más detalles sobre op ternaria en PHP: http://www.addedbytes.com/php/ternary-conditionals/

+0

Lo siento tratando de entender esto @cristianivascu ¿cómo leería esto?

+1

Si el el valor en $ active_page es igual a la cadena 'home' que imprimiría 'active'; de lo contrario, imprimiría una cadena vacía. –

Cuestiones relacionadas