Tellen en totalen

Ik heb een lijst met nummers die door gebruikers worden ingevoerd. Ik wil ze tellen en krijgen:

  1. Subtotalen voor elk nummer (alleen mogelijke nummers zijn 1, 2, 3, 4, 5 ) en
  2. een totaal van alle ingevoerde getallen.

Zien:

// 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;
}

Hoe kan ik de opgehoogde variabele overschrijven? Dan heb ik een beetje wat ik wil of heb ik het mis. Is er een betere/schonere aanpak?

# 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);

Een andere manier om te tellen en een totaal te krijgen (geen som, een totaal van ingevoerde getallen)?

Ik probeer dit al dagen uit te zoeken. Vanzelfsprekend ben ik een beginner en ik zou het graag willen begrijpen. Ik heb ongeveer 5 php-boeken en de PHP online handleiding gecontroleerd. Ik zou het op prijs stellen als iemand me in de goede richting zou kunnen leiden. Alstublieft :)

2
Dit: $ a == "1" is gelijk aan dit: $ a == 1 , vanwege PHP's type jongleren . Er is geen reden om opmerkingen over een cijfer toe te voegen aan dat type vergelijking, omdat je er gewoon een string van maakt met een nummer om te vergelijken met een ander cijfer/een reeks die ook zal worden omgezet; PHP zal in dit geval de vergelijking hetzelfde doen met of zonder de aanhalingstekens. Als u echter $ a === "1" gebruikt, moet u eerst het type van de variabele controleren en vervolgens vergelijken, waardoor u een ander resultaat krijgt als $ a geen tekenreekswaarde is .
toegevoegd de auteur Jared Farrish, de bron
toegevoegd de auteur Jared Farrish, de bron

1 antwoord

Dit zal doen wat u vraagt. Het verdeelt de getallen in een array, gebruikt array_sum om alle elementen te tellen en gebruikt vervolgens de grootte van de array om het totale aantal elementen te tellen. Het maakt ook gebruik van trimmen om alle witruimte op te ruimen die een gebruiker mogelijk heeft ingevoerd.

$split_numbers = explode(' ',trim($a));
$total_added = array_sum($split_numbers);
$total_numbers = sizeof($split_numbers);

U kunt deze code in actie zien hier .

3
toegevoegd
Bedankt! Helaas komen de sizeof() en count() terug als 1111 en exploderen() en vervolgens array_sum() geeft me 'Array Total numbers: 1' in plaats van de cijfers en het totaal: 3
toegevoegd de auteur ulliw, de bron
Ik heb je code getest in een leeg bestand en het werkt prima. Maar niet op de mijne. Ook maakt mijn variabele $ a deel uit van een array, deze komt van een ontploffing. $ data = explode ('', ($ abc)); $ a = $ gegevens [1];
toegevoegd de auteur ulliw, de bron