Ir para conteúdo
Giovanird

Ler variavel fora do foreach

Recommended Posts

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;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
O ideal seria nos dizer o que precisa fazer. Talvez apareça uma orientação ideal.

Para continuar como está, primeiro é preciso descobrir qual é o conteúdo de $turma.
Se o trecho de código exibo funciona, acredito que seria +- assim:
Usando a posição você teria os nomes

<?=$turma[0]['nome']?>

<?=$turma[1]['nome']?>

<?=$turma[2]['nome']?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, washalbano disse:

Olá!
O ideal seria nos dizer o que precisa fazer. Talvez apareça uma orientação ideal.

Para continuar como está, primeiro é preciso descobrir qual é o conteúdo de $turma.
Se o trecho de código exibo funciona, acredito que seria +- assim:
Usando a posição você teria os nomes


<?=$turma[0]['nome']?>

<?=$turma[1]['nome']?>

<?=$turma[2]['nome']?>

 

Boa noite! Obrigado pelo retorno!
Vou postar a imagem da api com os dados.
No meu exemplo coloquei "ID" e na verdade a condição é pela classe do aluno, sendo os alunos que pertencem a classe 1.
Preciso usar os valores fora de um foreach pois vou colocar em lugares diferentes dentro do site. Vou precisar da posição deles pois depois vou fazer uma comparação entre a idade deles (Exe. if( [0][idade] > [3][idade] ).....  )

 

 

api.thumb.png.38622f0952003b08752afcbfa32dd8f2.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi tu quer pegar o id de uma certa tbl pra outra certo??

Pode fazer assim usando extract()

 

Vou dar um exemplo 

 

<?php

$query = "SELECT * FROM user";
$stmt = $conn->query($query);
while($user = $stmt->fetch(PDO::FETCH_ASSOC)){
    extract($user);
}
$query = "SELECT * FROM curso WHERE iduser ={id_user} ";
$stmt = $conn->query($query);
while($curso = $stmt->fetch(PDO::FETCH_ASSOC)){
   extract($curso);

}
echo $titulo_urso;
?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, Jack Oliveira disse:

Se eu entendi tu quer pegar o id de uma certa tbl pra outra certo??

Pode fazer assim usando extract()

 

Vou dar um exemplo 

 


<?php

$query = "SELECT * FROM user";
$stmt = $conn->query($query);
while($user = $stmt->fetch(PDO::FETCH_ASSOC)){
    extract($user);
}
$query = "SELECT * FROM curso WHERE iduser ={id_user} ";
$stmt = $conn->query($query);
while($curso = $stmt->fetch(PDO::FETCH_ASSOC)){
   extract($curso);

}
echo $titulo_urso;
?>

 

 

Bom dia, obrigado pelo retorno.

 

Os dados são de apenas uma api, contendo a classe, nome e idade.
Preciso listar somente as classes "1" e pegar a posição [0],[1]... e os demais itens de cada laço. Isto tem que ser fora do laço foreach pois vou usar em campos diversos dentro do site.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Giovanird disse:

Bom dia, obrigado pelo retorno.

 

Os dados são de apenas uma api, contendo a classe, nome e idade.
Preciso listar somente as classes "1" e pegar a posição [0],[1]... e os demais itens de cada laço. Isto tem que ser fora do laço foreach pois vou usar em campos diversos dentro do site.

Faz uma função pegando o que precisa 

 

<?php

function DadosSite($Tabela, $Campo, $Parametros) {
$query = "SELECT {$Campo} FROM {$Tabela} {Parametros}";
$stmt = $conn->query($query);
while($dados = $stmt->fetch(PDO::FETCH_ASSOC)){
  //extract($dados);
return $dados["{$Campo}"];
}

}

//chama da seguinte forma

echo DadosSite('cursos', nome_curso, "WHERE iduser='{$id_user}'");
?>

Pode simplificar ai conforme precisar

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Jack Oliveira disse:

Faz uma função pegando o que precisa 

 


<?php

function DadosSite($Tabela, $Campo, $Parametros) {
$query = "SELECT {$Campo} FROM {$Tabela} {Parametros}";
$stmt = $conn->query($query);
while($dados = $stmt->fetch(PDO::FETCH_ASSOC)){
  //extract($dados);
return $dados["{$Campo}"];
}

}

//chama da seguinte forma

echo DadosSite('cursos', nome_curso, "WHERE iduser='{$id_user}'");
?>

Pode simplificar ai conforme precisar

Boa tarde! Muito obrigado pelo retorno.

Infelizmente não consegui fazer.
Não estou trabalhando com tabelas, MySQL. estou usando uma API  via json conforme a imagem.
Vou precisar filtrar dentro do json as classes com valor "1" e depois pegar o índice de cada um fora do laço Foreach igual da imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Giovanird disse:

Boa tarde! Muito obrigado pelo retorno.

Infelizmente não consegui fazer.
Não estou trabalhando com tabelas, MySQL. estou usando uma API  via json conforme a imagem.
Vou precisar filtrar dentro do json as classes com valor "1" e depois pegar o índice de cada um fora do laço Foreach igual da imagem

Posta o código do json 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Jack Oliveira disse:

Posta o código do json 

<?php

$turma = file_get_contents("https://api...............");
$turma = json_decode($turma, true);

foreach($turma as $rsturma):

if($rsturma['classe'] == 1){

echo $rsturma['classe']."<br>";
echo $rsturma['nome']."<br>";
echo $rsturma['idade']."<br><br>";

}

endforeach;

// aqui fora do laço preciso pegar a idade de cada aluno da classe 1 conforme a posição [0] [1] [2] ....
echo $rsturma[0]['idade']."<br>";
echo $rsturma[1]['idade']."<br>"; 
echo $rsturma[2]['idade']."<br>"; 
echo $rsturma[3]['idade']."<br>"; 
echo $rsturma[4]['idade']."<br>"; 

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$turma=[  
  ["classe"=>1,"nome"=>"Luis","idade"=>13],
  ["classe"=>2,"nome"=>"Otávio","idade"=>16],
  ["classe"=>1,"nome"=>"Maria","idade"=>12],
  ["classe"=>1,"nome"=>"Carlos","idade"=>12],
  ["classe"=>2,"nome"=>"Rafaela","idade"=>16],
  ["classe"=>1,"nome"=>"Mateus","idade"=>14],
  ["classe"=>1,"nome"=>"Andréa","idade"=>12],
  ["classe"=>2,"nome"=>"Robson","idade"=>16]];
$filtros=array_filter($turma,function($turma){return $turma["classe"]==1;});
$icontador=1;
echo "<table><tr><th>Posição<th>Nome<th>Idade";
foreach($filtros as $filtro):
  echo "<tr><td>$icontador<td>".$filtro["nome"]."<td>".$filtro['idade'];
  $icontador++;
endforeach;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • 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 Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • 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
×

Informação importante

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