Contar valores de um array dentro do foreach php

PHP

26/04/2021

Tenho o seguinte código:

$arr1 = Array
    (
    'topico 1' => array(
        0 => Array
            (
            'nome' => 'João',
            'visto' => 1
        ),
        1 => Array
            (
            'nome' => 'Jose',
            'visto' => 1
        ),
        2 => Array
            (
            'nome' => 'maria',
            'visto' => 0
        ),
        3 => Array
            (
            'nome' => 'Fernando',
            'visto' => 0
        ),
        4 => Array
            (
            'nome' => 'Marta',
            'visto' => 0
        ),
        5 => Array
            (
            'nome' => 'Tiago',
            'visto' => 0
        )
    ),
    'topico 2' => array(
        0 => Array
            (
            'nome' => 'Ricardo',
            'visto' => 1
        ),
        1 => Array
            (
            'nome' => 'Henrique',
            'visto' => 0
        ),
        2 => Array
            (
            'nome' => 'Tião',
            'visto' => 0
        ),
        3 => Array
            (
            'nome' => 'Lucas',
            'visto' => 0
        ),
        4 => Array
            (
            'nome' => 'Eduardo',
            'visto' => 0
        ),
        5 => Array
            (
            'nome' => 'Ester',
            'visto' => 0
        )
    )
);
$name = array();
foreach ($arr1 as $key => $valor1) {

    echo '<h2>' . $key . '</h2>';

    echo '<pre>';
    print_r($name);
    echo '</pre>';

    foreach ($valor1 as $ch => $valor2) {


        if ($valor2['visto'] == 1) {
            $name[] = $valor2['nome'];
        }
    }
    
    
}


Porém não estou conseguindo fazer funcionar do jeito que preciso. Preciso que ele exiba a cada topico somente os nomes em que visto = 1 e tem que ser dentro do primeiro foreach que é onde eu exibo os nomes como titulos de uma lista.
Jose Damascena

Jose Damascena

Curtidas 0

Respostas

Luiz

Luiz

26/04/2021

<?php
$arr1 = Array
        (
    ''topico 1'' => array(
        0 => Array
            (
            ''nome'' => ''João'',
            ''visto'' => 1
        ),
        1 => Array
            (
            ''nome'' => ''Jose'',
            ''visto'' => 1
        ),
        2 => Array
            (
            ''nome'' => ''maria'',
            ''visto'' => 0
        )
    ),
    ''topico 2'' => array(
        0 => Array
            (
            ''nome'' => ''Ricardo'',
            ''visto'' => 1
        ),
        1 => Array
            (
            ''nome'' => ''Henrique'',
            ''visto'' => 0
        )
    )
);
$name = array();
$name2 = array();

foreach ( $arr1 as $key => $valor1 ) {

    foreach ($valor1 as $ch => $valor2) {
 

        if ($valor2[''visto''] == 1 && $key == ''topico 1'' ) {
            $name[''topico_nome''] = ''Topico 1'';
            $name[] = $valor2[''nome''];

        }
        if ($valor2[''visto''] == 1 && $key == ''topico 2'' ) {
            $name2[''topico_nome''] = ''Topico 2'';
            $name2[] = $valor2[''nome''];
        }
    } 
}

print "{$name[''topico_nome'']}    =    {$name[0]} {$name[1]} <br>";
print "{$name2[''topico_nome'']}   =    {$name2[0]}";
// Aqui voce poderia colocar um foreach para imprimir, no meu caso é um teste,
// já sei o que será imprimido...

print"<br>";
print"<br>";
print"<br>";

var_dump($name);
print"<br>";
print"<br>";
var_dump($name2);



Debuga ai e tenta entender, se tiver alguma dúvida chame ai


GOSTEI 0
Luiz

Luiz

26/04/2021

não sei pq minhas aspas duplas viraram 2x aspas simples '-'
GOSTEI 0
Luiz

Luiz

26/04/2021

não sei pq minhas aspas duplas viraram 2x aspas simples '-'





<?php
$arr1 = Array
        (
    'topico 1' => array(
        0 => Array
            (
            'nome' => 'João',
            'visto' => 1
        ),
        1 => Array
            (
            'nome' => 'Jose',
            'visto' => 1
        ),
        2 => Array
            (
            'nome' => 'maria',
            'visto' => 0
        )
    ),
    'topico 2' => array(
        0 => Array
            (
            'nome' => 'Ricardo',
            'visto' => 1
        ),
        1 => Array
            (
            'nome' => 'Henrique',
            'visto' => 0
        )
    )
);
$name = array();
$name2 = array();
 
foreach ( $arr1 as $key => $valor1 ) {
 
    foreach ($valor1 as $ch => $valor2) {
  
 
        if ($valor2['visto'] == 1 && $key == 'topico 1' ) {
            $name['topico_nome'] = 'Topico 1';
            $name[] = $valor2['nome'];
 
        }
        if ($valor2['visto'] == 1 && $key == 'topico 2' ) {
            $name2['topico_nome'] = 'Topico 2';
            $name2[] = $valor2['nome'];
        }
    } 
}
 
print "{$name['topico_nome']}    =    {$name[0]} {$name[1]} <br>";
print "{$name2['topico_nome']}   =    {$name2[0]}";
// Aqui voce poderia colocar um foreach para imprimir, no meu caso é um teste,
// já sei o que será imprimido...
 
print"<br>";
print"<br>";
print"<br>";
 
var_dump($name);
print"<br>";
print"<br>";
var_dump($name2);

GOSTEI 0
Luiz

Luiz

26/04/2021

Faça o teste de mesa, se não entender, cole isso na linha 34 e tente entender :
print "<pre>";
print_r($arr1);
print "</pre>";
GOSTEI 0
POSTAR