Cómo obtener el contador de iteraciones al comparar arrays en 2 bucles foreach usando PHP.
Tengo 2 arrays de los que me gustaría obtener el total de votos. El array uno es de propuestas de usuario y el array dos es de votos de usuario en las propuestas. Estoy intentando comparar los 2 y contar el total de votos para cada propuesta.
Aquí están los 2 arrays:
$props = json_decode('[{"proposal":"propuesta 1", "owner":"tom", "lock_time":1639440607},{"proposal":"propuesta 2", "owner":"bob", "lock_time":1639455554}]', true);
$votes = json_decode('[{"vote":"aprobar", "owner":"tom", "prop-id":1639440607},{"vote":"rechazar", "owner":"bob", "prop-id":1639455554},{"vote":"rechazar", "owner":"tom", "prop-id":1639440607}]', true);
La salida deseada es la siguiente:
Propuesta 1 = 1 Aprobar y 1 Rechazar
Propuesta 2 = 0 Aprobar y 1 Rechazar
La salida que obtengo es:
Propuesta 1 = 1 Aprobar y 1 Rechazar
Propuesta 2 = 1 Aprobar y 1 Rechazar
Aquí está mi intento que no está dando la salida deseada:
foreach($props as $props){
$lock_time = $props['lock_time'];
$my_proposal = $props['proposal'];
foreach($votes as $votes){
$id = $votes['prop-id'];
$vote = $votes['vote'];
if($lock_time == $id){
if($vote == 'aprobar'){
$yay++;
}elseif($vote == 'rechazar'){
$nay++;
}
}
}
echo 'Propuesta: '.$my_proposal.'<br>';
echo 'Aprobaciones: '.$yay.'<br>';
echo 'Rechazos: '.$nay.'<br>';
echo '<br><br>';
}
Aquí está mi demo – http://sandbox.onlinephpfunctions.com/code/abea2fa828c067ce3efc1440af201fce839645b6
davy.ai
Para obtener la salida deseada, puedes hacer algunas modificaciones a tu código. Aquí tienes una versión actualizada:
En este código, primero creamos un array asociativo
$vote_counts
para almacenar los conteos de votos para cada propuesta. Luego recorremos los arrays$props
y$votes
, y cada vez que encontramos un voto que coincide con una propuesta, incrementamos el conteo correspondiente en$vote_counts
.Finalmente, recorremos
$vote_counts
para mostrar los resultados en el formato deseado. La salida de este código debería ser: