Heb zitten stoeien met regex en explode maar ik kom tot niets zinnigs.
Na het kijken op dit forum geen oplossing gevonden :-(

Weet één van jullie de oplossing?

Ik heb variabele $totaal met inhoud: "003201201"

Nu wil ik dat de inhoud van elke positie bij elkaar opgeteld wordt dus:
uitkomst van: 0+0+3+2+0+1+2+0+1
=9

Hulp wordt zeer gewaardeerd.
Alvast bedankt!
is het aantal posities variabel of altijd 9? In dat geval is het makkelijk op te lossen met substr+substr+etc
<?php

$str = "003201201";

for (
$count = 0,
$i = -1,
$len = strlen($str);

++$i < $len;

$count += (int) $str[$i]
);

echo $count;
@ Wouter, Is dat wat nieuws? Ik dacht eerst dat je aan het slapen was maar het werkt dus gewoon. Ik heb nog nooit iemand op deze manier een for lus zien gebruiken. Wel vind ik een normale lus wat beter leesbaar, maar dat kan ook komen omdat ik deze manier nog nooit gezien heb.

Anyway, de manier van wouter zal wel wat sneller zijn maar de functie waarnaar je opzoek was is waarschijnlijk str_split geweest en niet explode.

<?php

# De 'lijst' met getallen.

$totaal = '003201201';


# De som van alle getallen in de 'lijst' berekenen.

$sum = (ctype_digit($totaal)) ? array_sum(str_split($totaal)) : 'Ongeldige Lijst' ;

?>
Wouter en Mark bedankt voor jullie reakties!
Beide oplossingen doen wat ik wil.

@Mark
Is er ook nog een manier om in de foutopsporing van jouw methode te weten te komen welk karakter ongeldig is?

Groet,
Margreet
Niet echt, je zou met ctype_alpha() kunnen kijken of er letters instaan maar ik zou eigenlijk niet weten waarom je dat zou willen. Normaal controleer je wat je wilt hebben en niet wat er fout is. Of is er een andere reden waarom je wilt weten wat er fout is?
Mark, het { ... } block is nooit verplicht in elke loop of if statement. Hij wordt alleen wel vaak gebruikt om het statement uit te voeren, alleen bij kleine statements is het wel eens handig om het gewoon in de conditie in te bakken. (vond het ook leuk om hier op dit forum weer wat te laten zien wat de meeste waarschijnlijk niet kende, dan heeft iedereen er wat aan)

Margreet, bedankt. In mijn geval zou je een foutmelding kunnen plaatsen door regel 13 te vervangen met:
<?php
) {
if (!is_numeric($str[$i])) {
// het is geen cijfer

echo $str[$i].' is een ongeldig karakter.';
}
}
?>

Reageren