PHPでは、次の構造があります
$a = array(-1 => '-', 0 => '?', 1 => '+')[1];
構文エラーが発生します。複数の if/else クラスや switch/select ステートメントを避けて、便利な 1 行でそのようなことを行うことはまだ可能ですか? 私はこれがうまくいくpythonで考えていました:
a = {-1:'-', 0:'?', 1:'+'}[1]
動作するのは5.5.0alpha1 - 5.5.0beta2PHP
だけです。安定したバージョンがリリースされるまで、変数を使用する必要があります。
$array = array(-1 => '-', 0 => '?', 1 => '+');
print $array[1];
もう1つの興味深いことは、関数配列の逆参照をPHP
サポートすることです。これは、配列を関数でラップするだけで機能することを意味しますPHP 5.4
function __($_) {
return $_;
}
print __(array(-1 => '-', 0 => '?', 1 => '+'))[1];
PHP のバージョンに関係なく、それ以降の場合は、関数セットに何かを含める必要があります。
function deref($subject) {
return $subject;
}
function deref_array($array, $key) {
return $array[$key];
}
この非常に初歩的な関数のペアにより、PHP パーサーに最も頻繁に必要なものと意味を伝えることができます。
$a = deref_array(array(-1 => '-', 0 => '?', 1 => '+'), 1);
具体的なケースでは、2 番目の関数のみが必要ですが、最初の関数もしばしば役立ちます。
1行の方法は次のとおりです。
$a = array_pop(array_slice(array(-1 => '-', 0 => '?', 1 => '+'), 1, 1));
または一般的なケースでは:
$x = array_pop(array_slice(foo(), $offset, 1));
もちろん、これは恐ろしいことです。