我不确定这是否可行,但如果是......我无法弄清楚如何做到这一点......
我想从一个函数返回的数组中获取一个特定的元素,而不是先将它传递给一个数组......就像这样......
$item = getSomeArray()[1];
function getSomeArray(){
$ret = Array();
$ret[0] = 0;
$ret[1] = 100;
return $ret;
}
这是什么正确的语法?
答案 0 :(得分:16)
PHP无法做到尚未,这是一个众所周知的限制。你有充分的权利想知道“你在开玩笑吗?”。遗憾。
如果你不介意生成E_STRICT
警告,你可以随时分别用reset
和end
拉出数组的第一个和最后一个元素 - 这意味着你可以还可以拉出任何元素,因为array_slice
可以安排你想要保留的第一个或最后一个,但这可能会让事情走得太远。
但绝望不是:(此时即将推出)PHP 5.4版本将包含这个功能(名称为array dereferencing)。
更新:我只是想到了另一项可行的技术。可能有充分的理由说我从未使用过它或看过它,但从技术上说它可以完成这项工作。
// To pull out Nth item of array:
list($item) = array_slice(getSomeArray(), N - 1, 1);
答案 1 :(得分:3)
PHP 5.4添加了数组解除引用, 这是PHP的Array文档中的示例:
示例#7阵列解除引用
function getArray() {
return ['a', 'b', 'c'];
}
// PHP 5.4
$secondElement = getArray()[0]; // output = a
// Previously
$tmp = getArray();
$secondElement = $tmp[0]; // output = a
答案 2 :(得分:2)
是的,php无法做到这一点。蝙蝠你可以使用ArrayObect,如下:
$item = getSomeArray()->{1};
// Credits for curly braces for Bracketworks
function getSomeArray(){
$ret = Array();
$ret[0] = 0;
$ret[1] = 100;
return new ArrayObject($ret, ArrayObject::ARRAY_AS_PROPS);
}
好吧,也许不使用数字键,但我不确定。
答案 3 :(得分:2)
您所指的语法称为函数数组解除引用。它还没有实现,而且还有一个RFC for it。
普遍接受的语法是将函数的返回值赋给数组,并使用$array[1]
语法从中访问该值。
尽管如此,你也可以将你想要的密钥作为参数传递给你的函数。
function getSomeArray( $key = null ) {
$array = array(
0 => "cheddar",
1 => "wensleydale"
);
return is_null($key) ? $array : isset( $array[$key] ) ? $array[$key] : false;
}
echo getSomeArray(0); // only key 0
echo getSomeArray(); // entire array
答案 4 :(得分:1)
我知道这是一个老问题,但是,在您的示例中,您还可以使用array_pop()
来获取数组的最后一个元素,(或array_shift()
获取第一个元素。)
<?php
$item = array_pop(getSomeArray());
function getSomeArray(){
$ret = Array();
$ret[0] = 0;
$ret[1] = 100;
return $ret;
}
答案 5 :(得分:0)
正如其他人所说,没有直接的方法可以做到这一点,我通常只是将它分配给一个变量:
$items = getSomeArray();
$item = $items[1];
function getSomeArray(){
$ret = Array();
$ret[0] = 0;
$ret[1] = 100;
return $ret;
}
答案 6 :(得分:0)
我相当肯定在PHP中无法做到。您必须先将返回的数组分配给另一个数组,然后才能访问其中的元素,或者直接在其他函数中使用它来迭代返回的数组(即var_dump(getSomeArray()))。