Contar valores de um array dentro do foreach php
Tenho o seguinte código:
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.
$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
Curtidas 0
Respostas
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
26/04/2021
não sei pq minhas aspas duplas viraram 2x aspas simples '-'
GOSTEI 0
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
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