listar status visto e não visto dentro do foreach php

20/04/2021

0

PHP

Tenho uma aplicação em PHP que lista os dados do banco e me retorna o seguinte array.

$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

Jose Damascena

Responder

Posts

21/04/2021

Emerson Nascimento

tente algo assim:
$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'];
}

Responder

21/04/2021

Jose Damascena

Tenho uma aplicação em PHP que lista os dados do banco e me retorna o seguinte array.

$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.

Responder

21/04/2021

Jose Damascena

tente algo assim:
$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?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar