Ir para conteúdo

POWERED BY:

Arquivado

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

Dyegod3

[Resolvido] Impressão de Arrays

Recommended Posts

Bom dia pessoal!

 

estou com um pequeno problema aki, preciso de imprimir todos os elementos de um array que não sejam valores de um outro array

 

mais ou menos assim: o segundo array possui os indices que não podem ser impressos pelo primeiro array!

 

exemplo:

$array1 = {teste1, teste2, teste3, teste4, teste5, teste6 }

$array2={ 0,3,5}

 

tenho q imprimir apenas as posições 1,2,4 do primeiro array, como faço^?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende da linguagem.

a lógica da coisa seria + ow - assim:

//le os arrays
//.
//.
para i de 0 até tamanho_A faça
	Se (buscaPosicao(i) = 0) escreva(VetorA[i]);
Fim_para

Função buscaPosicao(inteiro pos) retorna Inteiro
	Inteiro retorno <- 0;
	Para i de 0 até tamanho_B faça
		Se (VetorB[i] = pos) então
			retorno <- 1
			break;
		Fim_Se
	Fim_Para
	Função_retorna retorno;
Fim_Função

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, passando para php eu fiz assim:

 

 

for ($i=0; $i < $numero_emails_arq; $i++)
	{
		if (buscaPosicao($i) == 0) 
		echo ($email[$i]);
	}


function buscaPosicao($pos)
		{
			$retorno = 0;
			for ($i=0; $i < $numero_emails_arq; $i++)
			{
				if($posicao[$i] = $pos)
				{
					$retorno =  1;
				break;
				}			
			}
			return $retorno;
		}

 

mais imprime todos os elementos!!!!!!!!!!!!! xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente implementar q eu te ajudo neh.

te dei 80% jah amigão.;

 

[]s

 

--

Com inteiros fica + ow - assim:

#include <stdio.h>

int buscaPosicao(int pos, int vetB[], int tamB){
	int i, retVal = 0;
	for(i=0;i<tamB;i++){
		if (vetB[i] == pos){
			retVal = 1;
			break;
		}
	}
	return retVal;
}

int main(){
	int i, tamA, tamB;
	printf("Digite quantos dados tera no seu vetorA: ");
	scanf("%d", &tamA);
	int vetA[tamA];
	printf("Digite quantos dados tera no seu vetorB: ");
	scanf("%d", &tamB);
	int vetB[tamB];
	for(i=0;i<tamA;i++) {
		printf("Digite o vetA[%d]: ", i);
		scanf("%d", &vetA[i]);
	}
	for(i=0;i<tamB;i++) {
		printf("Digite o vetB[%d]: ", i);
		scanf("%d", &vetB[i]);
	}
	for(i=0;i<tamA;i++)
		if (buscaPosicao(i, vetB, tamB) == 0) printf("%d ", vetA[i]);
	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixei ele assim cara, ainda tá pegando todo!

 

$tamA=$numero_emails_arq;
	$tamB=$numero_emails_arq;
	  
	$email[$tamA];
	  
	$posicao[$tamB];
  
  for($i=0;$i<$tamA;$i++)
		if (buscaPosicao($i, $posicao, $tamB) == 0) echo("! ". $email[$i]);
					
		
	function buscaPosicao($pos, $posicao, $tamB){
	$retVal = 0;
	for($i=0;$i<$tamB;$i++){
		if ($posicao[$i] == $pos){
			$retVal = 1;
			break;
		}
	}
	return $retVal;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ql é os valores q você ta jogando nos vetores??

no php você num precisa dizer ql o tipo de retorno?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

$email tem é um array de emails

$posicao é um array q possue emails repetidos, ou seja só as posições dos emails repeditos em relação a base de dados

 

no php não precisa dizer o tipo retorno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou fazer assim, como a lógica jah esta ai.

vou mover para a área de PHP lah o pessoal pode te ajudar melhor a partir desse ponto.

 

posso mover?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu dei uma olhada na documentação

 

parece q tenho q ter repetições no mesmo array para usar array_unique()

 

eu tenho dois arrays, um que recebe valores de emails de um arquivo txt e outro do banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma função que faz exatamente isto.

 

http://br.php.net/manual/pt_BR/function.array-diff-key.php

 

No próprio manual tem alguns exemplos

 

Qualquer dúvida posta de novo

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece q é isso mesmo q eu preciso, mais olha só

 

eu tenho no meu primeiro array= "

sdfawreadf@hotmail.com

ashduiahdiashudahsudiasddhasuidh@teste.com.br

faxaway@faxaway.com

help@mail.efax.com

hr.certification@mail.com

hr@accessindustrial.com

incomingfax2@accessindustrial.net

incomingfax@accessindustrial.net

info@jobsafetyusa.com

master@hotmail.com

olteam@microsoft.com

testeteste@hotmail.com

tony.smartins@gmail.com

vm@supportforvoip.com

wborges@guiavix.com.br

wborgesdirect@hotmail.com

dyegod3@hotmail.com"

 

esses emails no segundo tenho:

"dyegod3@hotmail.com

otoni.sm@hotmail.com

meganix33@gmail.com"

 

 

a função q estou usando é essa:

 

function array_unique_diff_key ($array1, $array2)
{
  if (is_array($array1) && is_array($array2))
	$array_final= array_diff_key($array1, $array2);
	for($i=0;$i < 20; $i++)
	{
	echo $array_final[$i]."!";
	}  
}

que está me retornando isso:

 

"!!!help@mail.efax.com

!hr.certification@mail.com

!hr@accessindustrial.com

!incomingfax2@accessindustrial.net

!incomingfax@accessindustrial.net

!info@jobsafetyusa.com

!master@hotmail.com

!olteam@microsoft.com

!testeteste@hotmail.com

!tony.smartins@gmail.com

!vm@supportforvoip.com

!wborges@guiavix.com.br

!wborgesdirect@hotmail.com

!dyegod3@hotmail.com

!!!!"

 

 

vejam só, ela não está imprimindo os 3 primeiros e email e está imprindo o ultimo que é repetido!

 

oq pode ser isso^?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow!

 

consegui pessoal! valeu pela ajuda de todos =D

 

em vez de usar array_diff_key usei array_diff

 

pegou tudo certin, sou grato a todos

 

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.