Transformar un array de ref a numerico

¡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!

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

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!!!

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!

Gracias Miguel68, va perfecto! ^^

:smiley: yeei cualquier duda, aca estamos!

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

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!!!

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!

Gracias Miguel68, va perfecto! ^^

:smiley: yeei cualquier duda, aca estamos!