Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?

A sua listagem está incompleta. Geralmente o problema sempre está antes da listagem, mais exatamente nas tabelas do MySQL. A sua listagem não traz o nome de nenhuma das tabelas. Eu esperava algo do tipo:
<?php
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("select * from tbusuario");
$usuario=$query->fetch_assoc();
echo "<table><tr><td align=left>".$usuario['nome']."</td>";
$criterio=$usuario['nome'];
$datacreatedat=$usuario['created_at'];
$iduser=$usuario['id_user'];
$query=$mysqli->query("select roteiro from tbroteiro where usuario=$criterio");
$destinos=$query->fetch_assoc()['roteiro'];
foreach($destinos as $key=>$destino):
echo "<td align=left>";
foreach($destino as $chave=> &$cidade):
echo $cidade['cid_nome']."-";
endforeach;
echo "</td>";
endforeach;
echo "<td>".date('d/m/Y', strtotime($datacreatedat))."</td>";
echo "<td align=left><a href=".base_url('UserAdmin/Usuario/getUsuarioById')."/$iduser>DETALHES</a></td>";
Na sua lista, encontrei outro endforeach; e na minha lista só montei dois loops. Antes de codificar no PHP, o problema é ver se você consegue o resultado que você quer dentro do MySQL. Caso afirmativo, aí sim você parte para o PHP. Se não der certo, você mostra os nomes das tabelas, e também a estrutura das tabelas com os respectivos relacionamentos.<?php
$destinos=[
[["id_cidade"=>3187,"id_inter"=>23548,"cid_nome"=>"Itajuba","cid_uf"=>"MG"],
["id_cidade"=>3574,"id_inter"=>23548,"cid_nome"=>"Poços de Caldas","cid_uf"=>"MG"],
["id_cidade"=>9414,"id_inter"=>23548,"cid_nome"=>"São José dos Campos","cid_uf"=>"SP"]],
[["id_cidade"=>2120,"id_inter"=>19233,"cid_nome"=>"Goiania","cid_uf"=>"GO"]],
[["id_cidade"=>5915,"id_inter"=>20189,"cid_nome"=>"Curitiba","cid_uf"=>"PR"],
["id_cidade"=>6505,"id_inter"=>20189,"cid_nome"=>"São José dos Pinhais","cid_uf"=>"PR"]]]; ["nome"=>"Rodrigo Alves de Lima","id_inter"=>23548],
["nome"=>"Silvio Santos","id_inter"=>19233],
["nome"=>"Pedro de Lara","id_inter"=>20189]]; echo $usuario["nome"]." saiu de Brasília e foi para <br>";
foreach($destinos as $destino):
$filtro=$destino;
foreach($filtro as $filtro):
if($filtro['id_inter']==$usuario['id_inter']):
echo $filtro['cid_nome']."<br>";
endif;
endforeach;
endforeach;
echo "---<br>";
endforeach;
Bom dia!
ñ fui capaz de entender.
talvez se resolva na query
talvez gerando um outro array a partir do resultado da query atual