2009-11-02 16 views
6

È comunque possibile accedere direttamente ai dati restituiti in una matrice senza una variabile temporanea?Accesso a una matrice restituita da una funzione

Attualmente, il mio codice è il seguente:

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

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

C'è un modo diretto per ottenere i dati restituiti senza la variabile temporanea?

+0

Si potrebbe anche avvolgere la funzione ritorna in '' 'current()' '', '' 'key()' '', '' reset() '' 'o' '' each '()' '' per accedere agli elementi specifici in uno linea. – kenorb

risposta

0

Sfortunatamente, no.

Si potrebbe fare qualcosa di simile:

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

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

E allora si potrebbe utilizzare un interruttore o se/else per eseguire solo altre funzioni sui dati restituiti se sono uguali un certo valore (in questo caso, se $ chiave == 'nome').

In breve, è molto più semplice impostare tale variabile temporanea e accedervi in ​​questo modo.

1

Ho chiesto un similar question qualche tempo fa.

La risposta breve è no, non è possibile. Eppure, se avete solo bisogno il primo valore della matrice, è possibile utilizzare reset():

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

davvero. Si potrebbe definire una funzione per farlo, però:

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

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

L'unico altro modo, che probabilmente non vi aiuterà molto in questo caso, è quello di utilizzare list() che vi porterà i primi n elementi nel restituiti array. Devi conoscere l'ordine degli elementi della lista in anticipo, però:

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

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

con gli array la risposta è no, ma è possibile utilizzare gli oggetti:

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

echo getData($id)->name; 
0

Credo che il verbage è un po ' sbagliato per la tua domanda, ma penso che stanno cercando di realizzare qualcosa di simile:

echo getData($id)->someArrayOffset; 

Mentre si può fare questo con mysql_fetch_object, io vi mostrerò come si può fare questo usando ArrayObject in PHP5, o restituendo y il nostro oggetto in PHP 4 in modo che tu possa trovare un'utilità al di fuori della funzione che restituisce gli oggetti per te. Ecco la tua stessa funzione utilizzando ArrayObject in PHP5:

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

echo getData($id)->name; 
10

PHP 5.4 gamma aggiunto Dereferenziare, ecco l'esempio da Array documentation di PHP:

Esempio # 7 Array dereferenziazione

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

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

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