Fóruns

Passando array multidimensional JS para PHP

Me1000

Pôster original
15 de julho de 2006
  • 3 de fevereiro de 2009
Postado sem fio (Mozilla / 5.0 (iPhone; U; CPU iPhone OS 2_2 como Mac OS X; en-us) AppleWebKit / 525.18.1 (KHTML, como Gecko) Versão / 3.1.1 Mobile / 5G77 Safari / 525.20)

Eu tenho um array multi dim em Javascript
Código: array[0][0] Preciso passar a matriz para PHP (provavelmente usando uma chamada Ajax)
Eu tenho o framework jquery carregado para trabalhar.

Qual seria a melhor maneira de passar o array para o PHP?

Obrigado

angelwatt

Moderador emérito
16 de agosto de 2005
USOS


  • 3 de fevereiro de 2009
Você pode entrar em detalhes sobre o comprimento e o tipo de informação na matriz para ambas as dimensões? Pode dar a alguns de nós algumas idéias sobre a melhor abordagem.

Adição: Alguns pequenos trechos. O exemplo usa uma matriz 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

Pôster original
15 de julho de 2006
  • 3 de fevereiro de 2009
Ambos os escurecimentos contêm uma pequena sequência de texto.
O primeiro é um nome de arquivo.
A segunda é uma legenda para o arquivo nomeado no primeiro escurecimento.

Analisarei seu código com mais detalhes amanhã, obrigado pela ajuda!
:maçã:

angelwatt

Moderador emérito
16 de agosto de 2005
USOS
  • 4 de fevereiro de 2009
Me1000 disse: Ambos os escurecimentos contêm uma pequena sequência de texto.
O primeiro é um nome de arquivo.
A segunda é uma legenda para o arquivo nomeado no primeiro escurecimento.

Analisarei seu código com mais detalhes amanhã, obrigado pela ajuda!
:maçã:

Contanto que essas strings não contenham vírgulas, acho que meu código deve dar uma boa vantagem. Não forneci tudo o que você precisa, mas se precisar de mais orientações ou esclarecimentos, é só me avisar.

Além disso, se mais alguém tiver ideias, sinta-se à vontade para compartilhar. Acabei de lançar a primeira ideia que me ocorreu.

Me1000

Pôster original
15 de julho de 2006
  • 4 de fevereiro de 2009
Eu pude ver as pessoas usando vírgulas na legenda ...

angelwatt

Moderador emérito
16 de agosto de 2005
USOS
  • 4 de fevereiro de 2009
Me1000 disse: posso ver as pessoas usando vírgulas na legenda ...

Hmm, boa escolha. Em seguida, uma alternativa é separar os valores da matriz usando algo diferente da vírgula. Portanto, uma nova função precisaria ser criada para usar em vez da função toString () que une os elementos do array. Talvez use '|' ou algum caractere raramente usado ou você pode usar alguns caracteres, por exemplo, '| @ |'. Então, no PHP, quando você explodir a string, você inserirá o (s) caractere (s) que usou como separador.

Isso é algo que você pode fazer ou precisa de orientação?

Me1000

Pôster original
15 de julho de 2006
  • 4 de fevereiro de 2009
Certo, foi isso que eu pensei ...
Código: function toStringComplex(array) { var string; for(var i = 0; i
Eu passo a string para o arquivo php

Código: window.location = 'parseData.php?data='+a; Esse pode não ser o meu código final para enviá-lo para o arquivo php, mas agora é o mais fácil de trabalhar.

problema é,
meu url se parece com isto:
Código: parseData.php?data=undefined|@|IMG_0608%2CIMG_0608|@|blahblah|@|blahblah...
Essa parte 'indefinida' no início está causando um problema ao analisar os dados.

Alguma ideia do por que isso está acontecendo?

quando eu ligo
Código: alert(itemsAll[0][0]); ele exibe o resultado correto, então eu sei que meu array original é bom

angelwatt

Moderador emérito
16 de agosto de 2005
USOS
  • 4 de fevereiro de 2009
Sim, em seu loop for você tem string = string + ..., mas string não é declarada na primeira vez. Pouco antes do loop for, quando você declara a variável string, defina-a igual a '' para que tenha um valor inicial.

Além disso, você provavelmente precisará de um loop for duplo, já que deseja trabalhar com um array multidimensional.

Me1000

Pôster original
15 de julho de 2006
  • 4 de fevereiro de 2009
arco!

Obrigado pela ajuda.


O código javascript final que terminei, para aqueles de vocês que estão interessados:

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

Savar

6 de junho de 2003
Distrito da Colombia
  • 4 de fevereiro de 2009
Parece que você entendeu, mas também pode fazer pesquisas sobre JSON.

JSON (Javascript Object Notation) permite codificar objetos javascript em uma notação compacta que pode ser enviada pela rede. A maioria das outras linguagens tem bibliotecas para analisar este JSON em objetos nativos. Tenho certeza de que se você pesquisar, terá uma ideia melhor do que quero dizer.