Variabele per positie uitlezen en optellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Margreet Keijzer

Margreet Keijzer

20/11/2012 12:26:40
Quote Anchor link
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!
 
PHP hulp

PHP hulp

08/11/2024 08:03:15
 
John D

John D

20/11/2012 12:32:29
Quote Anchor link
is het aantal posities variabel of altijd 9? In dat geval is het makkelijk op te lossen met substr+substr+etc
 
Wouter J

Wouter J

20/11/2012 12:36:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$str
= "003201201";

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

    ++
$i < $len;

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


echo $count;
 
- Mark -

- Mark -

20/11/2012 14:58:26
Quote Anchor link
@ 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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?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' ;

?>
 
Margreet Keijzer

Margreet Keijzer

20/11/2012 19:42:17
Quote Anchor link
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
 
- Mark -

- Mark -

20/11/2012 19:47:59
Quote Anchor link
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?
 
Wouter J

Wouter J

20/11/2012 19:58:05
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
) {
    if (!is_numeric($str[$i])) {
        // het is geen cijfer

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

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.