2009-11-02 116 views
6

是否有無論如何直接訪問數組中返回的數據而沒有臨時變量?訪問由函數返回的數組

目前,我的代碼如下:

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

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

是否有直接的方式去得到返回的數據,而臨時變量?

+0

你也可以換(),'''key()'''''reset()''''或''''''''''''''''''線。 – kenorb 2013-09-29 11:49:42

回答

0

不幸的是,沒有。

你可以做這樣的事情:

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

foreach(getData("your_input_query") as $key=>$value){ 
    echo $value; 
} 

然後你可以使用一個開關或者if/else語句,如果他們等於一定值(在這種情況下,只有返回的數據執行其他功能,如果$ key =='name'))。

簡而言之,只需設置該臨時變量並以這種方式訪問​​它就容易得多。

1

前段時間我問了similar question

簡短的回答是否定的,你不能。但是,如果您只需要數組中的第一個值,則可以使用reset():

function getArray() 
{ 
    array('la', 'li', 'lu'); 
} 
echo reset(getArray()); // echos "la" 
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 
4

與陣列答案是否定的,但你可以使用對象:

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

echo getData($id)->name; 
0

我覺得verbage有點錯了你的問題,但我認爲希望完成這樣的事情:

echo getData($id)->someArrayOffset; 

雖然你可以做到這一點與mysql_fetch_object,我會告訴你如何,你可以使用這個在ArrayObject的PHP5做,或通過返回ÿ我們自己在PHP 4中的對象,這樣你就可以在爲你返回對象的函數之外找到它的用處。下面是PHP5使用ArrayObject的你同樣的功能:

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

echo getData($id)->name; 
10

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];