Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

Transformar un array de ref a numerico
Started by visstaralax Jun 08 2017 03:14 AM

5 replies to this topic
[TOPIC CONTROLS]
This topic has been archived. This means that you cannot reply to this topic.
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

visstaralax

[GLOBAL: userInfoPane.html]
visstaralax
  • Enthusiast

  • 39 posts
  • Corona SDK

¡Buenas!

 

Necesito saber como transformar un array que tiene referencias string en las celdas, a referencias numéricas, ejemplo:

t ["info1"] = "dato1" -> t[1] = "dato1"
t ["info2"] = "dato2" -> t[2] = "dato2"
t ["info3"] = "dato3" -> t[3] = "dato3"

Esta claro que podría hacer una conversión de forma manual o con un for, pero el problema es que no se la longitud del array, y cuando pongo una referencia que no existe, no me sale null, me sale un error runtime.

 

Además, no es de un solo campo, tiene dos campos el array, el primero es con referencia string y el segundo númerica, aunque esto tampoco no añade problema al final y al cabo.

 

Gracias de antemano!



[TOPIC: post.html]
#2

miguel68

[GLOBAL: userInfoPane.html]
miguel68
  • Observer

  • 20 posts
  • Corona SDK

Hola, quiza algo asi podria servirte.

 
local original = {["indice1"]=1,["indice2"]=2,["indice3"]=3};
local target = {};
 
for key,value in pairs(original) do
table.insert(target, value);
end


[TOPIC: post.html]
#3

visstaralax

[GLOBAL: userInfoPane.html]
visstaralax
  • Enthusiast

  • 39 posts
  • Corona SDK

Hola Miguel! Eres un crack jeje siempre estás disponible para contestar. Pero creo que el código realiza una conversión manual, sabiendo la longitud de array (o no estoy entendiendo bien el proceso).

 

Voy a explicar un poco la situación, a ver si así sale la solución de otra manera: la pagina hecha con PHP me devuelve un array en formato json, y al descodificarla dentro de corona, me devuelve un array donde la primera dimensión es numerica, pero en string, y la siguiente dimension del array si es numerica:

$json = array();
            $count=0;
            if(mysql_num_rows($result)){
                while($row=mysql_fetch_row($result)) {
                $count = $count+1;
                $json[$count]=$row;
                }
            }
            mysql_close($db_name);
            echo json_encode($json);
         }

Esto por ejemplo me devuelve un array con los usuarios y contraseñas que tengo en la base de datos.Y el resultado es este:

{"1":["usuario01","password01"],"2":["usuario02","password02"],"3":["usuario03","password03"],"4":["usuario04","password04"],"5":["admin","admin"]}

Claro está que si los indices fueran numericos en vez strings, este problema ya no lo tendría. Cuando hago un #array para llegar a su máximo numero de celdas, me devuelve 0, porque el array no tiene referencias numericas en su primera dimension. De momento hago un "toNumeric()" para acceder celda a celda, pero no puedo saber la longitud de usuarios. Tengo algunas opciones:

 

- Añadir manualmente un "nil" por ejemplo, para indicar que allí termina el array, pero al ser string y no numerico, tengo el mismo problema.

 

- Arreglar el código PHP

 

- Que la pagina PHP me devuelva a parte el numero de celdas 

 

- Transformar el array de strings a referencias numericas

 

Gracias de nuevo!!!



[TOPIC: post.html]
#4

miguel68

[GLOBAL: userInfoPane.html]
miguel68
  • Observer

  • 20 posts
  • Corona SDK

la sentencia "pairs" que yo use es similar al "foreach" de php, lo que hace es repetir el ciclo por cada indice del la tabla ( no importa si es numerico o no) si te fijas es "for key,value in pairs(original) do " donde key es la llave de indice actual en la iteracion, value es el valor de ese indice ( el cual puede ser otra tabla, no hay problema con ello ) y dentro de pairs va la tabla a iterar.

 

En php la sentencia foreach es similar "foreach($array as $key => $value){ .. }"

 

 

Saludos!



[TOPIC: post.html]
#5

visstaralax

[GLOBAL: userInfoPane.html]
visstaralax
  • Enthusiast

  • 39 posts
  • Corona SDK

Gracias Miguel68, va perfecto! ^^



[TOPIC: post.html]
#6

miguel68

[GLOBAL: userInfoPane.html]
miguel68
  • Observer

  • 20 posts
  • Corona SDK

:D yeei cualquier duda, aca estamos!




[topic_controls]
[/topic_controls]