在 php 中,如何在不使用键周围的方括号的情况下访问数组的值?我的特殊问题是我想访问函数返回的数组元素。说 function(args) 返回一个数组。为什么 $var = function(args)[0]; 关于方括号对我大喊大叫?我可以做类似 $var = function(args).value(0); 的事情吗?还是我错过了一些非常基本的东西?
问问题
5219 次
5 回答
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();
于 2010-03-23T01:28:23.830 回答
2
在 PHP 中,当获取一个数组作为函数结果时,不幸的是,您必须做一个额外的步骤:
$temp_array = function($args);
$var = $temp_array[0];
对于对象,这在 PHP 5 中已经放宽了。你可以这样做:
$echo function($args)->property;
(当然前提function
是返回一个对象。)
于 2010-03-23T01:21:05.263 回答
1
如果你想要这个,最好返回一个对象(不幸的是,它完全蹩脚的 php 不支持这个)。出于新奇,这是我能够弄清楚的一种疯狂方式(请不要这样做!):
function returnsArray(){
return array("foo" => "bar");
}
echo json_decode(json_encode((object)returnsArray()))->foo;
//prints 'bar'
所以是的..直到他们在php中添加对数组取消引用的支持,我认为您可能应该将返回数组转换为对象:
return (object)array("foo" => "bar");
然后你可以做returnsArray()-> foo,因为php放松了对象而不是数组的解引用..或者当然像其他人建议的那样编写一个包装函数。
于 2010-11-17T20:09:39.757 回答
1
function getKey($array, $key){
return $array[$key];
}
$var = getKey(myFunc(args), $key);
不幸的是,如果不添加用户功能,就无法做到这一点。它只是不是语法的一部分。
你总是可以用老式的方式来做
$array = myFunc();
$value = $array[0];
于 2010-03-23T01:21:19.313 回答
1
与您的期望完全相符的是:
echo pos(array_slice($a=myFunc(), pos(array_keys(array_keys($a), 'NameOfKey'));
回答 Kinetix Kin,台北
于 2010-10-25T14:41:10.150 回答