Pregunta
Tengo una lista de números que los usuarios ingresan. Quiero contarlos y obtener:
- Subtotales para cada número (solo los números posibles son
1, 2, 3, 4, 5
), y - Un total de todos los números ingresados.
Ver:
// Outputs the numbers , " 1 4 1 1 5 "
// for example (no commas, order is as inputed by user)
echo $a;
#1:
if ($a == "1"){
$b++;
// Outputs the actual count but in steps,
// say there are 3 "1" then it outputs: 1 2 3 ,
// but I only want the 3.
echo $b;
}
¿Cómo puedo sobrescribir la variable incrementada? Entonces tengo lo que quiero o me equivoco. ¿Hay un enfoque mejor/limpio?
#2:
// outputs only a bunch of 11111
// (the right amount if i add them up)
echo count($a);
// outputs also a bunch of 111111
print strlen($a);
¿Alguna otra forma de contar y obtener un total (no una suma, un total de números ingresados)?
He estado tratando de resolver esto durante días. Obviamente, soy un principiante y me encantaría entender. He revisado alrededor de 5 libros de PHP y el manual de PHP en línea. Agradecería si alguien podría guiarme en la dirección correcta. Por favor :)
Solución
Esto hará lo que está solicitando. Divida los números en una matriz, usa Array_Sum para contar todos los elementos y luego usa el tamaño de la matriz para contar el número total de elementos. También usa Trim, para limpiar cualquier espacio en blanco, un usuario puede haber ingresado.
$split_numbers = explode(' ',trim($a));
$total_added = array_sum($split_numbers);
$total_numbers = sizeof($split_numbers);
Puedes ver este código en acción aquí.