Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hamon

Problemas com str_replace

Recommended Posts

Pessoal não estou conseguindo entender o str replace não está me retronando o valor correto, da uma ajuda ai quem puder!

 

 

CÓDIGO:

$letra1='A';
					$letra2='B';
					
					$prox_letra_antiga=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M','N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
					$prox_letra_nova=array('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A');
					$letra1=str_replace($prox_letra_antiga, $prox_letra_nova, $letra1);
					$letra2=str_replace($prox_letra_antiga, $prox_letra_nova, $letra2);
					

					echo $letra1.$letra2;
					

Esse código me retorna o valor de 'AA', sendo que oq eu queria que ele retornasse fosse 'BC'.

 

Alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você usa o str_replace como um array ele funciona como um laço de repetição:

$prox_letra_antiga=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M','N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$prox_letra_nova=array('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A');
$letra1=str_replace($prox_letra_antiga, $prox_letra_nova, $letra1);

Primeiro o "A" vai se transformar em "B", então ele vai ler a próxima letra que é o "B", nesse momento a variável $letra1 tem o valor de "B" que veio da iteração anterior, então ele vai alterar para "C" e assim por diante, até chegar a última letra do laço que é o "A".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você usa o str_replace como um array ele funciona como um laço de repetição:

$prox_letra_antiga=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M','N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$prox_letra_nova=array('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A');
$letra1=str_replace($prox_letra_antiga, $prox_letra_nova, $letra1);

Primeiro o "A" vai se transformar em "B", então ele vai ler a próxima letra que é o "B", nesse momento a variável $letra1 tem o valor de "B" que veio da iteração anterior, então ele vai alterar para "C" e assim por diante, até chegar a última letra do laço que é o "A".

Olá, obrigado pela resposta, não sabia dessa. Tem como eu fazer de outra forma oq eu quero fazer? Fiz com switch mas ficou gigante o tamanho do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você sempre for procurar apenas 1 letra, pode usar o array_search para procurar o índice no array original ($prox_letra_antiga) e ai com esse número você vai acessar a letra nova no array novo ($prox_letra_nova).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, bom dia. Obrigado pela resposta, achei interessante. So gostaria de saber como vou pegar o valor do array, buscando por uma chave (pega no array_search)?

 

Edit: Já consegui. Agredeço novamente o ESerra por salvar minha vida! Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.