• 0
Sign in to follow this  
Diego.Lopes

Ajuda simples com mapa em PHP

Question

Olá Pessoal,

Sou novo em programação PHP e estou precisando de uma ajuda.

Gostaria de saber se em PHP existe algo equivalente a um mapa em java?

Procurei bastante e não achei nada parecido.

Preciso saber como manipular uma variável desse tipo:

{1:[2,4,3,1],2:1,3:3,4:4,5:5}

Existe essa possibilidade?

Obrigado e aguardo resposta

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Olá Pessoal,

consegui fazer o que eu estava procurando.

Agora o problema já é outro.

Eu sei que é possível através de uma string transformar em um array.

Mas, se a string for desse jeito:

$palavra = '1 => array(1 => 1),2 => array(2 => 1, 2 => 2),3 => array(3 => 1, 3 => 3)';

$array = array($palavra);

echo $array[1][1]; // aqui não aparece nada

Isso é possível?

Share this post


Link to post
Share on other sites
  • 0

cara eu n estou entendendo muito bem o que você está querendo dizer..

porém não existe uma matriz ai.. só existe o array com 1 indice que é o '0'.

da um print_r() que tu vê. falow

Share this post


Link to post
Share on other sites
  • 0

O que eu estou tentando dizer é se é possível através de uma string como essa:

$palavra = '1 => array(1 => 1),2 => array(2 => 1, 2 => 2),3 => array(3 => 1, 3 => 3)';

Eu transforme em um array que fique dessa forma:

array(1 => array(1 => 1),2 => array(2 => 1, 2 => 2),3 => array(3 => 1, 3 => 3));

Caso contrário, existe alguma outra forma de transformar uma string em um array, mas que fique mais ou menos desse jeito? Ou seja, uma chave apontando para um array

Share this post


Link to post
Share on other sites
  • 0

Humm...

você quiz dizer: Se a string que está atribuida com aquele valor

$palavra = '1 => array(1 => 1),2 => array(2 => 1, 2 => 2),3 => array(3 => 1, 3 => 3)';

ao converter pra array, automaticamente ficar com aqueles indices.

Rapaz.. Ter tem, e tem diversas formas.

Eu nunca fiz isso porém eu vou te da umas ideias que pode ajudar ou não.

você transformando essa string "$palavra" em array e tirar as aspas já faz um array.

Ex: $palavra = array (1 => array(1 => 1),2 => array(2 => 1, 2 => 2),3 => array(3 => 1, 3 => 3))

ai tem diversas formas você pode fazer funções.. e etc. cara.. entra nesse site aqui e da uma olhada

http://www.php.net/manual/pt_BR/function.array.php

Espero ter te ajudado..

Abraços.

Share this post


Link to post
Share on other sites
  • 0

Certo.

Mas vamos supor que essa string já seja pré-definida e não possa ser apenas alterada apagando as aspas.

Existe alguma função que eu possa apagar e transformar em um array?

Share this post


Link to post
Share on other sites
  • 0

pode usar explode para separar as parte que o interessa o o str replace para escrever o que quer no lugar de algum delimitador ou dependendo da situação o substr

mas isso você vai precisa ver o que se adequa na sua nescessidade... você consegue sim transforma o array em uma string como uma string em uma array funções tem é so estudalas e consegui adptar a o seu uso...

Share this post


Link to post
Share on other sites
  • 0

Ok.

Achei um jeito de manipular a String.

Agora o que eu preciso é acessar os índices. pois estou tendo dificuldade com a hierarquia.

$lista = array(1 => array("a" => "a"),2 => array("b" => "a", "b" => "b"),3 => array("c" => "a", "c" => "c"));

Como que eu faço pra imprimir:

a - a

b - a, b - b

c - a, c - c

?

Talvez tenha outra forma de fazer um array. Vou explicar o que eu preciso.

Eu quero um array, que tenha vários índices(1, 2, 3), e nesses indices, tenham uma lista de valores, e que eu possa acessar tanto o índice, quanto os valores

Edited by Diego.Lopes

Share this post


Link to post
Share on other sites
  • 0

array se não me falha a memoria começa em 0

sendo assim

$lista[0][0] deve conter a/a

$lista[0][1] deve conte b/a

isso seguindo o que você postou ai o que no meu conceito logico ta errado já que o primeiro array deve receber a b c d e os demais tabme ai cruzando informações você monta como quiser como um sistema de matriz.

na verdade não entendo o que você quer fazer com isso mas quanto aos indices você vai tabalhar assim

no teu caso em especifico soa 3 array numa variavel então

$lista[0][0][0] vai conter o valor de a / b /c

acho que tem como entender o que to querendo dizer uhsahusauhs...

Share this post


Link to post
Share on other sites
  • 0

Hum...sinceramente não entendi. =)

Mas vou tentar explicar de uma outra maneira.

Vamos supor que eu tenho um jogo no qual eu preciso jogar um dado até que o valor que cair ser igual ao da jogada da vez. Ao final, eu monto uma lista.

Exemplo:

Jogada | Valores

1 3,2,5,1

2 2

3 1,6,5,3

4 1,4

5 1,2,5

6 3,4,1,3,4,1,2,6

Então ao final deve ter:

o índice 0 - 3,2,5,1

o índice 1 - 2

o indice 3 - 1,6,5,2

e assim por diante.

Então, como montar um array dessa maneira e acessar as posições que eu quiser?

Share this post


Link to post
Share on other sites
  • 0

Olha fiz um exemplo bem simples e pratico aqui para tu saca como funciona

$array = array(1 => array("a" => "a","b" => "b","c" => "c"),2 => array("b" => "a","c" => "b"),3 => array("c" => "a","c" => "c"));
var_dump($array);
esse var_dump retorno isto. (entenda - no array 3 colocamos o campo c recebendo 2 vezes ele sobreescreve sendo assim o resultado esta abaixo é c e n a) (no caso do array 1 e 2 eu coloqueis os campos distintos assim ele já imprime para mim os valores.)
array
  1 => 
    array
      'a' => string 'a' (length=1)
      'b' => string 'b' (length=1)
      'c' => string 'c' (length=1)
  2 => 
    array
      'b' => string 'a' (length=1)
      'c' => string 'b' (length=1)
  3 => 
    array
      'c' => string 'c' (length=1)

agora entenda como você vai pode utilizar este array.

se eu der echo $array[2]['c'];

vai me retorna

o array 2 com o valor do campo c que é b

qualquer duvida so fala

Edited by JaguA

Share this post


Link to post
Share on other sites
  • 0

Hum, entendi perfeitamente.

Porém, não sei como é que vai ser pra fazer o que eu quero, pois pelo que eu entendi ele vai sempre sobrescrever.

Saca só. Vou colocar embaixo como eu quero que seja lido

$array = array(1 => array(2 => 3,2 => 1,2 => 2));

Primeira Jogada(Só vai para outra jogada após acertar o número certo) - Era pra ser 2 e foi três, depois era pra ser 2 e foi 1, depois era pra ser 2 e foi 2.

Existe alguma maneira de não ser sobrescrito?

Share this post


Link to post
Share on other sites
  • 0

$array = array('Primeira Jogada' => 3, array('Segunda Jogada' => 1, array('Terceira Jogada' => 2)));
var_dump($array);

//resultado do var_dump

array
  'Primeira Jogada' => int 3
  0 => 
    array
      'Segunda Jogada' => int 1
      0 => 
        array
          'Terceira Jogada' => int 2

Share this post


Link to post
Share on other sites
  • 0

Ainda não é do jeito que eu quero.

Desse jeito uma jogada só é feita uma única vez. Preciso que seja feita várias vezes e pelo que eu entendi, ele sobrescreve.

Então gostaria de saber se existe alguma maneira de não sobrescrever

Share this post


Link to post
Share on other sites
  • 0

Vou copiar o meu outro post

Vamos supor que eu tenho um jogo no qual eu preciso jogar um dado até que o valor que cair ser igual ao da jogada da vez. Ao final, eu monto uma lista.

Exemplo:

Jogada | Valores

1------- |3,2,5,1

2--------|2

3------- |1,6,5,3

4------- |1,4

5------- |1,2,5

6------- |3,4,1,3,4,1,2,6

Então ao final deve ter:

o índice 0 - 3,2,5,1

o índice 1 - 2

o indice 3 - 1,6,5,2

e assim por diante.

Então, como montar um array dessa maneira e acessar as posições que eu quiser?

Share this post


Link to post
Share on other sites
  • 0

Você pode usar loop assim atribui loop para manegar o indice e assim não sobescrever

como eu postei anteriormente

Jogada 1 -> 1 Lançamento = 4 => 2 Lançamento = 3

crie um loop para ir acrescentnado o numero na frente do lançamento

para ele parar o loop coloque a condição de quando o Numero 5 for = a 5 de valor em algum array.

sendo assim idependente se o array vai trata os indice com outro nome n vai dexa de ser os lançamentos ...

Share this post


Link to post
Share on other sites
  • 0

Hummm..

Ou então.. se você quer quer não sobrescreva cria uma array onde fica os valores antigos e depois os resgata..

tipo a mesma ideia que você faz pra.

$aux = array();
atribui o valor antigo nelea
exp.         $aux =  array([2]['c']);
depois resgata.
$array[2]['c'] = $aux;

Não sei isso vai te ajudar + pelos menos é uma ideia.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this