转换变量时的三元运算符
Ternary operator when casting a variable
在写 is_numeric($var) ? (Int)$var : (String)$var;
时,我想知道是否可以移动 ternary operator to the part where I cast 变量:
echo (is_numeric($var) ? Int : String)$var;
不出我所料,它没有用:
PHP Parse error: syntax error, unexpected '$var' (T_VARIABLE)
这可能吗?或者也许接近我想要做的事情?这与其说是需要使用它,不如说是一种好奇心。
是的,这是可能的。这应该适合你:
var_dump((is_numeric($var)?(int)$var :(string)$var));
作为测试它的例子,你可以很容易地做到这一点:
$var = 5;
var_dump((true?(int)$var :(string)$var)); //Or var_dump((false?(int)$var :(string)$var));
输出:
int(5) //string(1) "5"
编辑:
他们唯一能想到做类似于你想要的事情的方法是:
settype($var, (is_numeric($var)?"int":"string"));
var_dump($var);
否;这不可能。三元运算符需要一个转换运算符不是的表达式。
然而,可以使用 first-class 函数,它们是表达式,带有三元运算符,如下所示:
$toInt = function($var) {
return (int) $var;
};
$toString = function($var) {
return (string) $var;
};
$foo = "10";
var_dump(call_user_func(is_numeric($foo) ? $toInt : $toString, $foo));
在写 is_numeric($var) ? (Int)$var : (String)$var;
时,我想知道是否可以移动 ternary operator to the part where I cast 变量:
echo (is_numeric($var) ? Int : String)$var;
不出我所料,它没有用:
PHP Parse error: syntax error, unexpected '$var' (T_VARIABLE)
这可能吗?或者也许接近我想要做的事情?这与其说是需要使用它,不如说是一种好奇心。
是的,这是可能的。这应该适合你:
var_dump((is_numeric($var)?(int)$var :(string)$var));
作为测试它的例子,你可以很容易地做到这一点:
$var = 5;
var_dump((true?(int)$var :(string)$var)); //Or var_dump((false?(int)$var :(string)$var));
输出:
int(5) //string(1) "5"
编辑:
他们唯一能想到做类似于你想要的事情的方法是:
settype($var, (is_numeric($var)?"int":"string"));
var_dump($var);
否;这不可能。三元运算符需要一个转换运算符不是的表达式。
然而,可以使用 first-class 函数,它们是表达式,带有三元运算符,如下所示:
$toInt = function($var) {
return (int) $var;
};
$toString = function($var) {
return (string) $var;
};
$foo = "10";
var_dump(call_user_func(is_numeric($foo) ? $toInt : $toString, $foo));