listar status visto e não visto dentro do foreach php
20/04/2021
0
$extensivo = Array ( 0 => Array ( 'nome' => 'João', 'visto' => 1 ), 1 => Array ( 'nome' => 'Lucas', 'visto' => 1 ), 2 => Array ( 'nome' => 'Julia', 'visto' => 0 ), 3 => Array ( 'nome' => 'Jose', 'visto' => 0 ), 4 => Array ( 'nome' => 'Maria', 'visto' => 0 ) );
Eu preciso fazer uma condicional nesse array para exibir os nomes que tem o visto = 1 aparecerem na cor verde e o proximo se for igual a 0 exibe na cor laranja, e o demais exibe na cor vermelha.
foreach ($extensivo as $details) { if($details['visto'] == 1){ $details['nome'] = 'verde'; } else if($details['visto'] == 0){ $details['nome'] = 'vermelho'; } else if('AQUI A CONDIÇÃO PARA MOSTRAR VERMELHO OS PROXIMOS NOMES QUE FORE VISTO = 0'){ $details['nome'] = 'vermelho'; } }
Digamos que o primeiro indice é Visto = 1, eu quero que ele fique verde e o proximo (indice 2) fique laranja, já os demais à partir do indice 3 fiquem vermelhos.
Jose Damascena
Posts
21/04/2021
Emerson Nascimento
$ultimo_visto = 0; foreach ($extensivo as $details) { if($details['visto'] == 1){ $details['nome'] = 'verde'; } else if($details['visto'] == 0 and $ultimo_visto = 1){ $details['nome'] = 'laranja'; } else { $details['nome'] = 'vermelho'; } $ultimo_visto = $details['visto']; }
21/04/2021
Jose Damascena
$extensivo = Array ( 0 => array( 0 => Array ( 'nome' => 'João', 'visto' => 0, 'topico' => 1 ), 1 => Array ( 'nome' => 'Jose', 'visto' => 0, 'topico' => 1 ), 2 => Array ( 'nome' => 'maria', 'visto' => 0, 'topico' => 1 ), 3 => Array ( 'nome' => 'Fernando', 'visto' => 0, 'topico' => 1 ), 4 => Array ( 'nome' => 'Marta', 'visto' => 0, 'topico' => 1 ), 5 => Array ( 'nome' => 'Tiago', 'visto' => 0, 'topico' => 1 ) ), 1 => array( 0 => Array ( 'nome' => 'Ricardo', 'visto' => 0, 'topico' => 2 ), 1 => Array ( 'nome' => 'Henrique', 'visto' => 0, 'topico' => 2 ), 2 => Array ( 'nome' => 'Tião', 'visto' => 0, 'topico' => 2 ), 3 => Array ( 'nome' => 'Lucas', 'visto' => 0, 'topico' => 2 ), 4 => Array ( 'nome' => 'Eduardo', 'visto' => 0, 'topico' => 2 ), 5 => Array ( 'nome' => 'Ester', 'visto' => 0, 'topico' => 2 ) ) ); $flag_sucesso = false; foreach ($extensivo as $details) { foreach ($details as $valor) { switch ($valor['visto']) { case 1: echo '<p class="text-success">' . $valor['nome'] . '</p>'; $flag_sucesso = true; break; case 0: if ($flag_sucesso) { echo '<p class="text-warning">' . $valor['nome'] . '</p>'; $flag_sucesso = false; } else { echo '<p class="text-danger">' . $valor['nome'] . '</p>'; } break; default: echo '<p class="text-error">Visto ' . $valor['nome'] . ' desconhecido</p>'; } } }
Eu atualizei o codigo acima consegui fazer parte do que preciso, porém preciso separar por topicos. Preciso que aconteça o mesmo no topico 2 o que acontece no topico, exemplo:
1º - No topico 1 deve aparece o primeiro item como amarelo e os demais vermelhos;
2º - Ao setar o primeiro item como visto (visto = 1), preciso que o item dois fique amarelo e o item 1 fique verde, os demais fiquem vermelhos e assim sucessivamente;
================================= ATÉ AQUI ESTÁ OK ===============================
3º Ao setar o ultimo item do topico 1 (nesse caso o item 5 do array), preciso que o item 1 do topico 2 fique amarelo e os demais do topico 2 fiquem vermelhos e assim sucessivamente pois vão existir varios arrays desse tipo.
21/04/2021
Jose Damascena
$ultimo_visto = 0; foreach ($extensivo as $details) { if($details['visto'] == 1){ $details['nome'] = 'verde'; } else if($details['visto'] == 0 and $ultimo_visto = 1){ $details['nome'] = 'laranja'; } else { $details['nome'] = 'vermelho'; } $ultimo_visto = $details['visto']; }
atualizei a questão você pode me ajudar?
Clique aqui para fazer login e interagir na Comunidade :)