Y a-t-il un opérateur ternaire ou similaire dans PHP qui agit comme ??
De c #?
??
En C # est propre et plus court, mais dans PHP, vous devez faire quelque chose comme:
// 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';
PHP 7 ajoute l'opérateur Opérateur NULL COALESCE :
// 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';
Vous pouvez également examiner à court terme l'opérateur ternaire de PHP ? : (PHP> = 5.3 uniquement)
// Example usage for: Short Ternary Operator
$action = $_POST['action'] ?: 'default';
// The above is identical to
$action = $_POST['action'] ? $_POST['action'] : 'default';
Et votre comparaison avec C # n'est pas juste. "In PHP Vous devez faire quelque chose comme" - En C #, vous aurez également une erreur d'exécution si vous essayez d'accéder à un tableau/dictionnaire inexistant.
Le Opérateur NULL FOALCECE , (??
) a été accepté et mis en œuvre dans PHP 7 . Il diffère de l'opérateur Ternary court opérateur ternaire (?:
) dans ce ??
supprimera le E_NOTICE
Cela se produirait autrement lorsque vous essayez d'accéder à un tableau où il n'a pas de clé. Le premier exemple dans le RFC donne:
$username = $_GET['user'] ?? 'nobody';
// equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
Notez que le ??
opérateur ne nécessite pas l'application manuelle de isset
pour empêcher le E_NOTICE
.
J'utilise la fonction. Évidemment, ce n'est pas un opérateur, mais semble plus propre que votre approche:
function isset_or(&$check, $alternate = NULL)
{
return (isset($check)) ? $check : $alternate;
}
Usage:
isset_or($_REQUEST['test'],'hi');
Avant PHP 7, il n'y en a pas. Si vous devez impliquer isset
, le modèle à utiliser est isset($var) ? $var : null
. Il n'y a pas ?:
Opérateur qui inclut les caractéristiques de isset
.