2009-11-02 34 views
6

¿Hay alguna forma de acceder directamente a los datos devueltos en una matriz sin una variable temporal?Acceso a una matriz devuelta por una función

Actualmente, mi código es el siguiente:

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

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

¿Hay una manera directa para obtener los datos devueltos sin la variable temporal?

+0

También puede envolver la función devuelve en '' 'current()' '', '' 'key()' '', '' 'reset()' '' o '' 'each()' '' para acceder a los elementos específicos en uno línea. – kenorb

Respuesta

0

Lamentablemente, no.

Se podría hacer algo como esto:

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

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

Y entonces se podría usar un interruptor o si/else declaraciones a sólo realizan otras funciones en los datos devueltos si son iguales a un valor determinado (en este caso, if $ key == 'nombre').

En resumen, es mucho más fácil simplemente establecer esa variable temporal y acceder de esa manera.

1

He pedido similar question hace algún tiempo.

La respuesta corta es no, no se puede. Sin embargo, si solo necesita el primer valor de la matriz, puede usar reset():

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

No realmente. Se podría definir una función para hacerlo, sin embargo:

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

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

La única otra manera, lo que probablemente no le ayudará mucho en este caso, es el uso de list() que conseguir que los primeros elementos de la n devuelto formación. Usted tiene que saber el orden de los elementos de la lista de antemano, sin embargo:

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 matrices La respuesta es no, pero se puede usar objetos:

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

echo getData($id)->name; 
0

Creo que el verbage es un poco inadecuado para su pregunta, pero creo que están en busca de lograr algo como esto:

echo getData($id)->someArrayOffset; 

Mientras que usted puede hacer esto con mysql_fetch_object, voy a mostrar cómo se puede hacer esto utilizando ArrayObject en PHP5, o mediante la devolución y nuestro propio objeto en PHP 4 para que pueda encontrar una utilidad fuera de la función que le devuelva objetos. Aquí tiene su misma función utilizando ArrayObject en PHP5:

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

echo getData($id)->name; 
10

PHP 5.4 gama añadido Desreferenciar, aquí está el ejemplo de Array documentation de PHP:

Ejemplo # 7 Matriz dereferencing

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

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

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