访问函数返回的数组

时间:2009-11-02 23:24:05

标签: php arrays function variables return

无论如何直接访问没有临时变量的数组中返回的数据?

目前,我的代码如下:

function getData($id) {
    // mysql query
    return mysql_fetch_array($result);
}

$data = getData($id);
echo $data['name'];

是否有直接的方法来获取没有临时变量的返回数据?

6 个答案:

答案 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;