Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/06/2013, 11:55
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Return y echo me dan resultados diferentes, por que?

Cita:
Iniciado por iceberg Ver Mensaje
Hola como estan, soy nuevo en el foro , bueno mi duda es la siguiente: Por que en una función que tengo con un array me devuelve todos los valores si pongo echo, pero si pongo return solo me devuelve un valor, les dejo parte del código, para ser mas claro:
Código PHP:
public function getpathlivepos_json($num) {
.
.
.
foreach(
$Rs as $Route)
    {
            
$arrayJson = array();
            
$i 0;
            foreach(
$Route->TrackerRouteList as $unit)
            {
                
$arrayJson[$i]['Unit'] = $unit->TrackerId;
                foreach(
$unit->CoordinateList as $Coordinates)
                {
                    
$arrayJson[$i]['Coordinates'][] = array($Coordinates->Latitude$Coordinates->Longitude);
                }
                
$i++;
                
                
            }
                     return 
json_encode($arrayJson);
            
    }
         


El resultado de este codigo, usando return para la devolucion de valores,es el siguiente:
[{"Unit":7,"Coordinates":[["21.115957","-86.838120"]]}];

Ahora bien si cambio el return json_encode($arrayJson); por echo:
echo json_encode($arrayJson);

Me devuelve todos los valores que realmente necesito:
[{"Unit":7,"Coordinates":[["21.115957","-86.838120"]]}][{"Unit":8,"Coordinates":[["21.110843","-86.840906"]]}][{"Unit":9,"Coordinates":[["21.110757","-86.841915"]]}]

Como puedo hacer para que mi función me devuelva todos los valores que necesito en formato Json?

Muchas gracias.
creo que si bien veo y bien has escrito, en el primer foreach declaras las variables $arraJson y $i.

en la siguiente iteración vuelves a declarar las mismas variables, por lo que el valor se pierde.

saca esas variables del foreach (decláralas antes del foreach) y deja el return. cuando vayas a procesar la variable con que recoges el return debes procesarla con otro foreach.

antes te funcionaba con echo porque imprimias cada iteración pero con el return guardastes solo el último valor.