operadores - que significa-> en php




El operador de unión nulo de C#(??) en PHP (4)

Antes de PHP 7, no hay. Si necesita involucrar a isset , el patrón a usar es isset($var) ? $var : null isset($var) ? $var : null . No hay operador ?: Que incluye las características de isset .

¿Hay un operador ternario o similar en PHP que actúa como ?? De c#?

?? en C # es limpio y más corto, pero en PHP tienes que hacer algo como:

// This is absolutely okay except that $_REQUEST['test'] is kind of redundant.
echo isset($_REQUEST['test'])? $_REQUEST['test'] : 'hi';

// This is perfect! Shorter and cleaner, but only in this situation.
echo null? : 'replacement if empty';

// This line gives error when $_REQUEST['test'] is NOT set.
echo $_REQUEST['test']?: 'hi';

El wiki.php.net/rfc/isset_ternary , ( ?? ) ha sido aceptado e implementado en PHP 7 . Se diferencia del operador ternario corto ( ?: ?? eso ?? suprimirá la E_NOTICE que de lo contrario ocurriría al intentar acceder a una matriz donde no tiene una clave. El primer ejemplo en el RFC da:

$username = $_GET['user'] ?? 'nobody';
// equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

Tenga en cuenta que el ?? El operador no requiere la aplicación manual de isset para evitar la E_NOTICE .


PHP 7 agrega el operador de unión nula :

// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

También puede buscar una forma breve de escribir el operador ternario de php ?: (Solo php = = 5.3)

// Example usage for: Short Ternary Operator
$action = $_POST['action'] ?: 'default';

// The above is identical to
$action = $_POST['action'] ? $_POST['action'] : 'default';

Y su comparación con C # no es justa. "en PHP tiene que hacer algo como": en C # también tendrá un error de tiempo de ejecución si intenta acceder a un elemento de matriz / diccionario que no existe.


Yo uso la función. Obviamente no es un operador, pero parece más limpio que tu enfoque:

function isset_or(&$check, $alternate = NULL)
{
    return (isset($check)) ? $check : $alternate;
}

Uso:

isset_or($_REQUEST['test'],'hi');




php-7