Ir para conteúdo

Arquivado

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

clicabarato

Como pegar vários arrays e colocar o conteúdo em um único

Recommended Posts

Olá, estou a 2 dias tentando resolver um problema, não consigo pegar varios arrays com indices 0 e colocar e um único array.

 

EX:

 

<?php

 

function buscarEstados1($id) {

include 'includes/conexao.php';
$s_down = "select id from tab_afiliado where upline = $id";
$res_down = $cnns->query($s_down);
$count = $res_down->rowCount();
$res_down->execute();
foreach ($res_down as $down) {
$aff_uf = $down['id'];
$teste = array();
$s_uf = "select uf,id_endereco from tab_endereco WHERE id_endereco = " . $aff_uf . "";
$res_uf = $cnns->query($s_uf);
foreach ($res_uf as $uf) {
$temp= $uf['uf'];
$ug = substr($temp, -2); //Pega apenas 1 siglas dos estados pois algumas aparecem 2 como uma strings só isso acontece apenas em nós da rede
array_push($teste ,"$ug");
var_dump($teste );
}buscarEstados1($aff_uf);
}
}
buscarEstados1(1000);
?>
RESUMO DO QUE QUERO FAZER:
PEGAR ISSO QUE ESTÁ AGORA NO CÓDIGO:

array { [0]=> "SP" } array { [0]=> "MG" } array { [0]=> "MT" }

 

E FAZER ISSO:

 

array { [0]=> "SP", [1]=> "MG", [2]=> "MT"};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não li seu código, mas acho que há uma grande gambiarra por trás disso. De todo modo, respondendo à sua pergunta, vou lhe dar duas sugestões para fazer o que você precisa:

<pre>
<?php
$arr1 = [ 'teste' ];
$arr2 = [ 'teste' ];
$arr3 = [ 'teste' ];
$arr4 = [ 'teste' ];


//Opção 1:
$arr = array_merge( $arr1, $arr2, $arr3, $arr4 );
print_r( $arr );


//Opção 2, com laço:
$arr = [];
for ( $i = 1, $total = 4 ; $i <= $total ; ++$i )
    $arr[] = ${"arr$i"}[ 0 ];


print_r( $arr );

Retorno:

 

Array

(
[0] => teste
[1] => teste
[2] => teste
[3] => teste
)
Array
(
[0] => teste
[1] => teste
[2] => teste
[3] => teste
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus Tavares não deu certo pois é como se o código estivesse dessa forma estivesse dessa forma:

 

$arr = array("teste1");
var_dump($arr);
$arr = array("teste2");
var_dump($arr);
$arr = array("teste3");
var_dump($arr);
$arr = array("teste4");
var_dump($arr);

 

 

Me parece ser um erro de posicionamento para mostrar o resultado, como é feito loop dentro de loop, preciso dar um jeito nisso, se caso vc consiga uma solução eu estarei aguardando! Obrigado por enquanto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá... colega tente mudar a posição inicial do array e também o var_dump como o Matheus Tavares falou

Coloque $teste = array(); antes do 1º foreach e o var_dump($teste ); depois de fechar o 1º foreach.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Codigo:

 

function buscarEstados1($id) {
include 'includes/conexao.php';
$s_down = "select id from tab_afiliado where upline = $id";
$res_down = $cnns->query($s_down);
$teste = array();
foreach ($res_down as $down) {
$aff_uf = $down['id'];
$s_uf = "select uf,id_endereco from tab_endereco WHERE id_endereco = " . $aff_uf . "";
$res_uf = $cnns->query($s_uf);
foreach ($res_uf as $uf) {
$u .= $uf['uf'];
$ug = substr($u, -2);
array_push($teste ,"$ug");
buscarEstados1($aff_uf);
}
}var_dump($teste); //echo $u;
}
buscarEstados1(1001);
RESULTADO:
NULL array(1) { [0]=> string(2) "MT" } NULL array(1) { [0]=> string(2) "AM" }
Ele esta pegando a posição do UpLine como vazio qnd coloco o var_dump($teste); depois da chaves do primeiro foreach, sinceramente eu tentei de todas as formas mas nada funcionou, não conseguindo fazer um array só com todos os resultados do BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim precisa pois pq tenho que buscar todos que estão dentro da rede

 

EX: 0

/ \
1 2
/ \ / \
3 4 5 6
/
7

 

Imagina se eu não usasse a recursão... vários loops sem fim e várias repetiçoes de código....rs

 

Como todos os usuarios nem sempre vai estar na rede de um ou de outro eu preciso buscar as UFs dos cadastrados de cada rede em suas respectivas posições. pois estou montando um grafico onde mostrará quantos pessoas da sua rede tem em cada estado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então nesse caso além do id que você está passando como parametro, passe também o array.

Crie o array antes de chamar a função e passe ele como parâmetro, depois de executar a função dá um print no array para ver como fica.

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu dei uma limpadinha no código e tentarei explicar melhor

 

//MEU BANCO DE DADOS CONSIDERANDO APENAS AS PESSOAS DA REDE DO ID 1001

 

id_usuario | uf

-------------------------

1001 | SP

1003 | MG

1005 | AM

1027 | MT

 

// MONTAGEM DA REDE

 

1001

/ \

1003 1005

/

1027

 

 

 

function buscarEstados1($id)
{
include 'includes/conexao.php';
$s_down = "select id from tab_afiliado where upline = $id";
$res_down = $cnns->query($s_down);
foreach ($res_down as $down)
{
$aff_uf = $down['id'];//var_dump($aff_uf); //PEGA OS IDS 1003, 1027, 1005
$s_uf = "select uf,id_endereco from tab_endereco WHERE id_endereco = " . $aff_uf . "";
$res_uf = $cnns->query($s_uf);
foreach ($res_uf as $uf)
{
$temp = $uf['uf']; //var_dump($temp); //PEGA AS UF MG , AM , MT
}
buscarEstados1($aff_uf);
}
}
buscarEstados1(1001);
Gostaria de pegar as UF e fazer um array só Array ( "MG" , "AM" , "MT");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

tente assim:

$estados=array();

function buscarEstados1($id, $estados) {
	include 'includes/conexao.php';  
	$s_down = "select id from tab_afiliado where upline = $id";
	$res_down = $cnns->query($s_down);

	foreach ($res_down as $down) {
		$aff_uf = $down['id'];	 
		$s_uf = "select uf,id_endereco from tab_endereco WHERE id_endereco = " . $aff_uf . "";
		$res_uf = $cnns->query($s_uf);
		
		foreach ($res_uf as $uf) {
		    $u .= $uf['uf'];
		    $ug = substr($u, -2);
		    array_push($estados, $ug);  
		    buscarEstados1($aff_uf, $estados);
		}  
	}

}
buscarEstados1(1001, $estados);

echo "<pre>";
print_r($estados);
echo "</pre>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP Kid

 

O resultado foi vazio

 

Array(

 

)

 

Caracas pior que não vejo outra forma de fazer isso mais pois se a pesquisa no BD fosse mais simples seria bem mais facil fazer o que quero pelo próprio select, pena que tenho que puxar 1 por 1 do BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, acho que faltou o return... tente novamente assim:

$estados=array();

function buscarEstados1($id, $estados) {
	include 'includes/conexao.php';  
	$s_down = "select id from tab_afiliado where upline = $id";
	$res_down = $cnns->query($s_down);

	foreach ($res_down as $down) {
		$aff_uf = $down['id'];	 
		$s_uf = "select uf,id_endereco from tab_endereco WHERE id_endereco = " . $aff_uf . "";
		$res_uf = $cnns->query($s_uf);
		
		foreach ($res_uf as $uf) {
		    $u .= $uf['uf'];
		    $ug = substr($u, -2);
		    array_push($estados, $ug);  
		    $estados=buscarEstados1($aff_uf, $estados);
		}  
	}
    return $estados;
}
$estados=buscarEstados1(1001, $estados);

echo "<pre>";
print_r($estados);
echo "</pre>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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