在 PHP 中,我有以下构造
$a = array(-1 => '-', 0 => '?', 1 => '+')[1];
这给出了语法错误。是否仍然可以在一条方便的行中避免多个 if/else 类或 switch/select 语句来做这些事情?我在想python哪里可以正常工作:
a = {-1:'-', 0:'?', 1:'+'}[1]
它只适用于PHP
5.5.0alpha1 - 5.5.0beta2您现在应该使用变量,直到发布稳定版本。
$array = array(-1 => '-', 0 => '?', 1 => '+');
print $array[1];
另一个有趣的事情是PHP
支持函数数组解引用,PHP 5.4
这意味着只需将数组包装在一个函数中就可以使其工作
function __($_) {
return $_;
}
print __(array(-1 => '-', 0 => '?', 1 => '+'))[1];
您可以创建一个辅助函数,以便您可以在一行中完成。
function array_get($array, $key)
{
return $array[$key]
}
print array_get(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);
在您的具体情况下,您只需要第二个功能,但第一个通常也很有用。
单线方式是:
$a = array_pop(array_slice(array(-1 => '-', 0 => '?', 1 => '+'), 1, 1));
或者在一般情况下:
$x = array_pop(array_slice(foo(), $offset, 1));
这当然是可怕的。