2009-11-02 7 views
6

Czy istnieje bezpośredni dostęp do danych zwróconych w tablicy bez zmiennej tymczasowej?Dostęp do tablicy zwróconej przez funkcję

Obecnie mój kod wygląda następująco:

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

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

Czy istnieje bezpośredni sposób, aby uzyskać dane zwrócone bez zmiennej tymczasowej?

+0

Można też owinąć funkcja zwraca w '' 'current()' '', '' 'key()' '', '' 'reset()' '' lub '' 'each()' '', aby uzyskać dostęp do określonych elementów w jednym linia. – kenorb

Odpowiedz

0

Niestety, nie.

Można zrobić coś takiego:

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

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

A następnie można użyć przełącznika lub jeśli/else Aby wykonać tylko z innych funkcji zwracanych danych, jeśli one równać pewną wartość (w tym przypadku, jeśli $ key == 'name').

Krótko mówiąc, łatwiej jest ustawić tę zmienną tymczasową i uzyskać do niej dostęp.

1

Jakiś czas temu zapytałem o numer similar question.

Krótka odpowiedź brzmi: nie, nie możesz. Jeśli jednak potrzebujesz pierwszej wartości w tablicy, możesz użyć polecenia reset():

function getArray() 
{ 
    array('la', 'li', 'lu'); 
} 
echo reset(getArray()); // echos "la" 
3

Niezupełnie. Można zdefiniować funkcję, aby to zrobić, choć:

function array_value($array, $key) { 
    return $array[$key]; 
} 

// and then 
echo array_value(getData($id), 'name'); 

Jedynym sposobem, który prawdopodobnie nie pomogą Ci dużo w tym przypadku jest użycie list() który będzie Ci pierwsze n produktów w zwracana szyk. Trzeba wiedzieć, kolejność elementów na liście wcześniej, choć:

function test() { 
    return array(1, 2, 3, 4); 
} 

list($one, $two, $three) = test(); 
// now $one is 1, $two is 2, $three is 3 
4

z tablicami odpowiedź brzmi nie, ale można korzystać z obiektów:

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

echo getData($id)->name; 
0

myślę verbage jest trochę źle za pytanie, ale myślę, że szukasz osiągnąć coś takiego:

echo getData($id)->someArrayOffset; 

Chociaż można to zrobić z mysql_fetch_object, pokażę ci, jak można to zrobić za pomocą ArrayObject w PHP5, lub wracając y nasz własny obiekt w PHP 4, abyś mógł znaleźć dla niego użyteczność poza funkcją zwracającą obiekty dla ciebie. Oto Twoja samą funkcję przy użyciu ArrayObject w PHP5:

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

echo getData($id)->name; 
10

PHP 5.4 Dodany tablica dereferencing, oto przykład z PHP Array documentation:

Przykład # 7 Array dereferencing

function getArray() { 
    return array(1, 2, 3); 
} 

// on PHP 5.4 
$secondElement = getArray()[1]; 

// previously 
$tmp = getArray(); 
$secondElement = $tmp[1];