无论如何直接访问没有临时变量的数组中返回的数据?
目前,我的代码如下:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
$data = getData($id);
echo $data['name'];
是否有直接的方法来获取没有临时变量的返回数据?
答案 0 :(得分:11)
PHP 5.4添加了数组解除引用,这是PHP的Array documentation中的示例:
示例#7阵列解除引用
function getArray() {
return array(1, 2, 3);
}
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
答案 1 :(得分:4)
对于数组,答案是否定的,但你可以使用对象:
function getData($id) {
// mysql query
return mysql_fetch_object($result);
}
echo getData($id)->name;
答案 2 :(得分:3)
不是真的。但是,您可以定义一个函数来执行此操作:
function array_value($array, $key) {
return $array[$key];
}
// and then
echo array_value(getData($id), 'name');
唯一的另一种方法,在这种情况下可能对你没什么帮助,就是使用list()
来获取返回数组中的第一个n
项。但是,您必须事先知道列表中项目的顺序:
function test() {
return array(1, 2, 3, 4);
}
list($one, $two, $three) = test();
// now $one is 1, $two is 2, $three is 3
答案 3 :(得分:1)
我前段时间问过similar question。
简短的回答是否定的,你不能。但是,如果您只需要数组中的第一个值,则可以使用reset():
function getArray()
{
array('la', 'li', 'lu');
}
echo reset(getArray()); // echos "la"
答案 4 :(得分:0)
不幸的是,没有。
你可以这样做:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
foreach(getData("your_input_query") as $key=>$value){
echo $value;
}
然后你可以使用switch或if / else语句只对返回的数据执行其他函数,如果它们等于某个值(在这种情况下,如果$ key =='name')。
简而言之,只需设置该临时变量并以此方式访问它就会容易得多。
答案 5 :(得分:0)
我认为你的问题有点错误,但我认为我们希望这样做:
echo getData($id)->someArrayOffset;
虽然您可以使用mysql_fetch_object执行此操作,但我将向您展示如何在PHP5中使用ArrayObject执行此操作,或者在PHP 4中返回您自己的对象,以便您可以在返回对象的函数之外找到它的有用性为了你。这是在PHP5中使用ArrayObject的相同功能:
function getData($id) {
// mysql query
return new ArrayObject( mysql_fetch_array($result) );
}
echo getData($id)->name;