4

を書いているときに、三項演算子を変数をキャストする部分にis_numeric($var) ? (Int)$var : (String)$var;移動できるかどうか疑問に思っていました。

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

驚くことではありませんが、うまくいきませんでした:

PHP 解析エラー: 構文エラー、予期しない '$var' (T_VARIABLE)

これはまったく可能ですか?それとも、私がやろうとしていることに近いものですか?使う必要があるというよりは、好奇心です。

4

2 に答える 2

2

いいえ; これは不可能です。三項演算子は、キャスト演算子ではない式を期待しています。

ただし、次のような三項演算子を使用して、式であるファーストクラスの関数を使用することは可能です。

$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));
于 2015-01-27T16:20:14.423 に答える