PHP:快速访问数组值
时间:2020-03-05 18:40:03 来源:igfitidea点击:
在php中,我经常需要使用数组来映射变量...但是我似乎无法在一个内衬中做到这一点。 c.f.例子:
// the following results in an error: echo array('a','b','c')[$key]; // this works, using an unnecessary variable: $variable = array('a','b','c'); echo $variable[$key];
这是一个小问题,但有时会不时地出现问题……我不喜欢这样的事实,我什么都不用使用变量;)
解决方案
回答
我真的不会去理会那个额外的变量。但是,如果需要,也可以在使用后将其从内存中删除:
$variable = array('a','b','c'); echo $variable[$key]; unset($variable);
或者,我们可以编写一个小函数:
function indexonce(&$ar, $index) { return $ar[$index]; }
并通过以下方式调用:
$something = indexonce(array('a', 'b', 'c'), 2);
现在应该自动销毁该阵列。
回答
技术上的答案是,PHP语言的语法仅允许在变量表达式的末尾使用下标表示法,而不是一般在表达式的末尾,这就是它在大多数其他语言中的工作方式。我一直将其视为语言的一种缺陷,因为有可能有一种语法可以明确地将下标针对任何表达式进行解析。但是,可能是因为他们使用的是不灵活的解析器生成器,或者他们只是不想破坏某种向后兼容性。
以下是有效表达式中无效下标的另外两个示例:
$x = array(1,2,3); print ($x)[1]; //illegal, on a parenthetical expression, not a variable exp. function ret($foo) { return $foo; } echo ret($x)[1]; // illegal, on a call expression, not a variable exp.
回答
或者类似的东西,如果我们需要变量中的数组值
$variable = array('a','b','c'); $variable = $variable[$key];
回答
实际上,这是一个优雅的解决方案:)下面将把myfunc返回的数组的第3个元素分配给$ myvar:
$myvar = array_shift(array_splice(myfunc(),2));