Foros

Pasando una matriz multidimensional JS a PHP

Me1000

Poster original
Jul 15, 2006
  • Feb 3, 2009
Publicada de forma inalámbrica (Mozilla / 5.0 (iPhone; U; CPU iPhone OS 2_2 como Mac OS X; en-us) AppleWebKit / 525.18.1 (KHTML, como Gecko) Versión / 3.1.1 Mobile / 5G77 Safari / 525.20)

Tengo una matriz de luz múltiple en Javascript
Código: array[0][0] Necesito pasar la matriz a PHP (probablemente usando una llamada Ajax)
Tengo el marco jquery cargado para trabajar.

¿Cuál sería la mejor manera de pasar la matriz a PHP?

Gracias

angelwatt

Moderador emérito
16 de agosto de 2005
USA


  • Feb 3, 2009
¿Puede ampliar la longitud y el tipo de información en la matriz para ambas dimensiones? Podría darnos algunas ideas sobre el mejor enfoque.

Adición: Algunos pequeños fragmentos. El ejemplo usa una matriz de 2x3.
PHP: // JavaScript function SendArray() { var arr = [[0,1], [2,3], [4,5]]; // 2x3 array var a = escape(arr.toString()); ajaxCall('phpPage.php?array='+a); // not a real function } // PHP // Grab passed value, decode the query passed in, then explode it based on the comma $passedArray = explode(',', rawurldecode($_GET['array'])); // result: 0,1,2,3,4,5 $newArray = array(); // process the string for ($a=0, $b=0, $c=count($passedArray); $b<$c;) { $newArray[$a][0] = $passedArray[$b++]; $newArray[$a++][1] = $passedArray[$b++]; }

Me1000

Poster original
Jul 15, 2006
  • Feb 3, 2009
Ambos atenuadores contienen una pequeña cadena de texto.
El primero es un nombre de archivo.
El segundo es un título para el archivo que se nombra en el primer dim.

Revisaré tu código más a fondo mañana, ¡gracias por la ayuda!
:manzana:

angelwatt

Moderador emérito
16 de agosto de 2005
USA
  • Feb 4, 2009
Me1000 dijo: Ambos atenuadores contienen una pequeña cadena de texto.
El primero es un nombre de archivo.
El segundo es un título para el archivo que se nombra en el primer dim.

Revisaré tu código más a fondo mañana, ¡gracias por la ayuda!
:manzana:

Siempre que esas cadenas no contengan comas, creo que mi código debería dar una buena ventaja. No proporcioné todo lo que necesita, pero si necesita más orientación o aclaración, hágamelo saber.

Además, si alguien más tiene ideas, no dude en compartirlas. Solo saqué la primera idea que se me ocurrió.

Me1000

Poster original
Jul 15, 2006
  • Feb 4, 2009
Pude ver a la gente usando comas en el pie de foto ...

angelwatt

Moderador emérito
16 de agosto de 2005
USA
  • Feb 4, 2009
Me1000 dijo: Pude ver personas usando comas en el título ...

Hmm, buena decisión. Entonces, una alternativa es separar los valores de la matriz usando algo que no sea la coma. Por lo tanto, sería necesario crear una nueva función para usar en lugar de la función toString () que une los elementos de la matriz. Quizás use '|' o algún carácter de uso poco común o podría usar un par de caracteres, por ejemplo, '| @ |'. Luego, en PHP, cuando explote la cadena, ingresará qué carácter (s) usó como separador.

¿Es eso algo que puede hacer o necesita orientación?

Me1000

Poster original
Jul 15, 2006
  • Feb 4, 2009
Muy bien, esto es lo que se me ocurrió ...
Código: function toStringComplex(array) { var string; for(var i = 0; i
Paso la cadena a al archivo php

Código: window.location = 'parseData.php?data='+a; Puede que ese no sea mi código final para enviarlo al archivo php, pero ahora es el más fácil de trabajar.

el problema es,
mi URL se parece a esto:
Código: parseData.php?data=undefined|@|IMG_0608%2CIMG_0608|@|blahblah|@|blahblah...
Esa parte 'indefinida' al principio está causando un problema al analizar los datos.

¿Alguna idea de por qué está pasando eso?

cuando llamo
Código: alert(itemsAll[0][0]); muestra el resultado correcto, así que sé que mi matriz original es buena

angelwatt

Moderador emérito
16 de agosto de 2005
USA
  • Feb 4, 2009
Sí, en su bucle for tiene string = string + ..., pero la cadena no se declara la primera vez. Justo antes del bucle for, cuando declaras la variable de cadena, configúrala igual a '' para que tenga un valor inicial.

Además, es probable que necesite un bucle for doble, ya que desea trabajar con una matriz multidimensional.

Me1000

Poster original
Jul 15, 2006
  • Feb 4, 2009
¡inclinarse!

Gracias por tu ayuda.


El código javascript final con el que terminé, para aquellos de ustedes que estén interesados:

Código: function toStringComplex(array) { var string; for(var i = 0; i

savar

6 de junio de 2003
Distrito de Columbia
  • Feb 4, 2009
Parece que lo resolvió, pero es posible que también desee investigar un poco sobre JSON.

JSON (Javascript Object Notation) le permite codificar objetos javascript en una notación compacta que se puede enviar por cable. La mayoría de los otros lenguajes tienen bibliotecas para analizar este JSON en objetos nativos. Estoy seguro de que si lo investigas tendrás una mejor idea de lo que quiero decir.