Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ternary operator when casting a variable

While writing is_numeric($var) ? (Int)$var : (String)$var;, I was wondering if it could be possible to move the ternary operator to the part where I cast the variable:

echo (is_numeric($var) ? Int : String)$var;

Not to my surprise, it didn't work:

PHP Parse error: syntax error, unexpected '$var' (T_VARIABLE)

Is this at all possible? Or maybe something close to what I'm trying to do? It's more of a curiosity thing than a need to use it.

like image 297
Bas Peeters Avatar asked Jan 10 '23 00:01

Bas Peeters


1 Answers

Yes it's possible. This should work for you:

var_dump((is_numeric($var)?(int)$var :(string)$var));

As an example to test it you can easy do this:

$var = 5;
var_dump((true?(int)$var :(string)$var)); //Or var_dump((false?(int)$var :(string)$var));

Output:

int(5)  //string(1) "5"

EDIT:

They only way i could think of to do something similar to what you want would be this:

settype($var, (is_numeric($var)?"int":"string")); 
var_dump($var);
like image 98
Rizier123 Avatar answered Jan 16 '23 21:01

Rizier123