是否有無論如何直接訪問數組中返回的數據而沒有臨時變量?訪問由函數返回的數組
目前,我的代碼如下:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
$data = getData($id);
echo $data['name'];
是否有直接的方式去得到返回的數據,而臨時變量?
是否有無論如何直接訪問數組中返回的數據而沒有臨時變量?訪問由函數返回的數組
目前,我的代碼如下:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
$data = getData($id);
echo $data['name'];
是否有直接的方式去得到返回的數據,而臨時變量?
不幸的是,沒有。
你可以做這樣的事情:
function getData($id) {
// mysql query
return mysql_fetch_array($result);
}
foreach(getData("your_input_query") as $key=>$value){
echo $value;
}
然後你可以使用一個開關或者if/else語句,如果他們等於一定值(在這種情況下,只有返回的數據執行其他功能,如果$ key =='name'))。
簡而言之,只需設置該臨時變量並以這種方式訪問它就容易得多。
前段時間我問了similar question。
簡短的回答是否定的,你不能。但是,如果您只需要數組中的第一個值,則可以使用reset():
function getArray()
{
array('la', 'li', 'lu');
}
echo reset(getArray()); // echos "la"
不是。你可以定義一個函數來做到這一點,雖然:
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
與陣列答案是否定的,但你可以使用對象:
function getData($id) {
// mysql query
return mysql_fetch_object($result);
}
echo getData($id)->name;
我覺得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;
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];
你也可以換(),'''key()'''''reset()''''或''''''''''''''''''線。 – kenorb 2013-09-29 11:49:42