Jump to content
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;

 

Share this post


Link to post
Share on other 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']?>

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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;
?>

 

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 

Share this post


Link to post
Share on other 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>"; 

?>

 

Share this post


Link to post
Share on other 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;

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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
       
       
    • By 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

    • By 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!
    • By 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
    • By 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
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.