是否可以内联访问PHP数组?

时间:2013-04-24 12:59:02

标签: php arrays

在PHP中,我有以下构造

$a = array(-1 => '-', 0 => '?', 1 => '+')[1];

,这给出了语法错误。是否仍然可以在一个方便的行中执行此类操作,避免多个if / else clases或switch / select语句?我在python上思考这项工作很好:

a = {-1:'-', 0:'?', 1:'+'}[1]

4 个答案:

答案 0 :(得分:6)

它适用于PHP但只有5.5.0alpha1 - 5.5.0beta2你现在应该使用变量,直到发布稳定版本。

$array =  array(-1 => '-', 0 => '?', 1 => '+');
print $array[1];

另一个有趣的事情是PHP PHP 5.4支持Function Array Dereferencing,这意味着只需将数组包装在一个函数中就能使其正常工作

function __($_) {
    return $_;
}

print __(array(-1 => '-', 0 => '?', 1 => '+'))[1];

答案 1 :(得分:1)

您可以创建辅助函数,以便在一行中完成。

function array_get($array, $key)
{
    return $array[$key]
}

print array_get(array(-1 => '-', 0 => '?', 1 => '+'), 1);

答案 2 :(得分:0)

单行方式是:

$a = array_pop(array_slice(array(-1 => '-', 0 => '?', 1 => '+'), 1, 1));

或者在一般情况下:

$x = array_pop(array_slice(foo(), $offset, 1));

这当然很可怕。

答案 3 :(得分:0)

无论哪个PHP版本,如果你之后,你应该在你的功能集中有一些东西:

function deref($subject) {
    return $subject;
}

function deref_array($array, $key) {
    return $array[$key];
}

这对非常基本的函数允许您经常告诉PHP解析器您需要什么并且意味着:

$a = deref_array(array(-1 => '-', 0 => '?', 1 => '+'), 1);

在具体案例中,您只需要第二个函数,但第一个函数通常也很有用。