在php中访问没有方括号的数组值

时间:2010-03-23 01:15:30

标签: php arrays square-bracket

在php中如何在不使用键周围的方括号的情况下访问数组的值?我的特殊问题是我想访问函数返回的数组元素。假设函数(args)返回一个数组。为什么是     $ var = function(args)[0]; 关于方括号向我大喊大叫?我能做点什么吗     $ var = function(args).value(0); 还是我错过了一些非常基本的东西?

5 个答案:

答案 0 :(得分:10)

正如其他人所说,你几乎必须使用一个临时变量:

$temp = myFunction();
$value = $temp[0];

但是,如果知道返回的数组的结构,则可以避免使用临时变量。

如果您只想要第一个成员:

$value = reset(myFunction());

如果你想要最后一个成员:

$value = end(myFunction());

如果您想要其中任何一个:

// second member
list(, $value) = myFunction();

// third
list(, , $value) = myFunction();

// or if you want more than one:

list(, , $thirdVar, , $fifth) = myFunction();

答案 1 :(得分:2)

在PHP中,当将数组作为函数结果获取时,遗憾的是你不得不做一个额外的步骤:

$temp_array = function($args);
$var = $temp_array[0];

对于对象,这在PHP 5中已经放宽了。你可以这样做:

$echo function($args)->property;

(提供function当然会返回一个对象。)

答案 2 :(得分:1)

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

$var = getKey(myFunc(args), $key);

不幸的是,如果不添加用户功能,就无法做到这一点。它只是语法的一部分。

你总是可以用旧时尚的方式来做这件事

$array = myFunc();
$value = $array[0];

答案 3 :(得分:1)

与您的期望完全匹配的是:

echo pos(array_slice($a=myFunc(), pos(array_keys(array_keys($a), 'NameOfKey'));

回答Kinetix Kin,台北

答案 4 :(得分:1)

如果你想要这个,它可能最好返回一个对象(不幸的是,它完全蹩脚的php不支持这个)。这是一种疯狂的方式,我能够弄清楚,出于新奇(请不要这样做!):

function returnsArray(){
    return array("foo" => "bar");
}

echo json_decode(json_encode((object)returnsArray()))->foo;
//prints 'bar'

所以是的..直到他们在php中添加了对数组解除引用的支持,我想你应该把返回数组作为一个对象:

return (object)array("foo" => "bar");

然后你可以做returnArray() - > foo,因为php放松了对象的解除引用而不是数组...或者当然是像其他人建议的那样写一个包装函数。