E aí galera, depois de um longo tempo sem postar absolutamente nada, eu volto. Hoje vou mostrar uma para que usei esses dias por pura preguiça, mas resolveu então foda-se.
Quando eu faço uma busca no banco ou consumo uma API, seu retorno é um array de objetos, esse é um exemplo é claro.
Ex:
Array ( [0] => stdClass Object ( [id] => 1 [tipo] => Em andamento [status] => 1 [created_at] => 2021-11-04 23:35:31 ) [1] => stdClass Object ( [id] => 2 [tipo] => Concluído [status] => 1 [created_at] => 2021-11-04 23:35:43 ) [2] => stdClass Object ( [id] => 3 [tipo] => Cancelado [status] => 1 [created_at] => 2021-11-04 23:35:51 ) )
A ideia é criar uma tabela com o resultado, porém isso de forma automática é claro, minha ideia é que tudo seja feito de forma automática, então criar a tabela e preencher os títulos e as colunas.
A primeira coisa é percorrer o array e pegar apenas os objetos.
if($this->parametros['cal_evento'])
foreach ($this->parametros['cal_evento'] as $key => $evento) {
print_r($evento);
}
Depois disso, vamos transformar esse objeto em array
if($this->parametros['cal_evento'])
foreach ($this->parametros['cal_evento'] as $key => $evento) {
print_r(get_object_vars($evento));
}
O resultado fica assim:
Array ( [id] => 1 [tipo] => Em andamento [status] => 1 [created_at] => 2021-11-04 23:35:31 ) Array ( [id] => 2 [tipo] => Concluído [status] => 1 [created_at] => 2021-11-04 23:35:43 ) Array ( [id] => 3 [tipo] => Cancelado [status] => 1 [created_at] => 2021-11-04 23:35:51 )
Pronto agora que os objetos são arrays eu consigo pegar os títulos de cada coluna para usar na minha tabela, para pegar os títulos usamos o método array_keys, ele retorna apenas os títulos de um array.
Como neste caso eu sei que os objetos te um mesmo formato consigo fazer isso
$titulos = array_keys(get_object_vars($this->parametros[‘cal_evento’][0]));
Agora o código completo da brincadeira ficou assim:
echo '<table><tbody>';
if ($this->parametros['cal_evento']) {
$titulos = array_keys(get_object_vars($this->parametros['cal_evento'][0]));
echo '<tr>';
foreach ($titulos as $key => $titulo)
echo '<th>'.$titulo.'</th>';
echo '</tr>';
foreach ($this->parametros['cal_evento'] as $key => $evento) {
echo '<tr>';
foreach ($titulos as $key => $titulo)
echo '<td>'.$evento->$titulo.'</td>';
echo '</tr>';
}
}
echo '</tbody></table>';
Provavelmente dever haver uma forma melhor de fazer isso, mas eu adoro gambiarras.