Versio

numerieke arraywaarden optellen

Overzicht Reageren

Wout van der Burg

Wout van der Burg

12/02/2008 16:19:00
Quote Anchor link
Hallo,

Ik ben aan het proberen om numerieke waarden in een array bij elkaar op te tellen. Dit lukt mij echter niet, met name de decimalen achter de komma.

Om een voorbeeld te geven:
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
16
<?php
$voorbeeld
= Array("12,50","12,50","0","12,50");

    function
ArrayCount($array) {
        $getal = 0;
    
        foreach($array as $waarde=>$key) {
            $getal2 = $key;
            $getal = $getal + $getal2;
        }

        
        return $getal;
    }


echo ArrayCount($voorbeeld);
?>


Dit gaf als resultaat: 36.
Dit met natuurlijk zijn: 37,5

Ik heb het binnen de functie ook al geprobeerd met de functie array_sum(); en array_count_values();

Ziet iemand wat ik fout doe?
 
PHP hulp

PHP hulp

25/05/2012 12:23:17
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

12/02/2008 16:20:00
Quote Anchor link
Getallen zijn altijd met een punt en nooit met een komma.
 
Wout van der Burg

Wout van der Burg

12/02/2008 16:26:00
Quote Anchor link
Hmm ja ok

Is er een functie die de getallen kan omzetten? Want duizendtallen zijn ook gescheiden met een punt.. :)
 
- SanThe -

- SanThe -

12/02/2008 16:31:00
Quote Anchor link
Wout schreef op 12.02.2008 16:26:
Hmm ja ok

Is er een functie die de getallen kan omzetten? Want duizendtallen zijn ook gescheiden met een punt.. :)

Dat met duizendtallen doe je alléén als output op je scherm met een punt, niet in een array() of in een database.
 
Gerben Jacobs

Gerben Jacobs

12/02/2008 16:31:00
Quote Anchor link
Niet in PHP.

Kijk anders naar number_format()

Edit: Niet in PHP bedoel ik dus die komma's met getallen.. (Maar omdat SanThe op 't exacte zelfde moment moet posten werd mijn post dus onduidelijk)

p.s. Je moet dus ook geen dubbele aanhalingstekens gebruiken.



Edit 2:


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
16
<?php
$voorbeeld
= Array(12.50, 12.50, 0, 12.50);

    function
ArrayCount($array) {
        $getal = 0;
    
        foreach($array as $waarde=>$key) {
            $getal2 = $key;
            $getal = $getal + $getal2;
        }

        
        return $getal;
    }


echo ArrayCount($voorbeeld);
?>
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
 
Frank -

Frank -

12/02/2008 16:37:00
Quote Anchor link
Wat is er mis met de functie array_sum() ?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$voorbeeld
= Array(12.50, 12.50, 0, 12.50);

echo array_sum($voorbeeld);
?>

Resultaat: 37.5
 
Wout van der Burg

Wout van der Burg

12/02/2008 16:37:00
Quote Anchor link
Ik heb eens naar number-format gekeken en de output was nog hetzelfde..

Ik heb het nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    function ArrayCount($array) {
        $getal = 0;

        foreach($array as $waarde=>$key) {
            $getal2 = number_format($key,2,",",".");
            $getal = $getal + $getal2;
        }

        
        return $getal;
    }

?>


@pgFrank:
Het zit em in de puntjes.. :)
De $key waarden moet ik eerst omzetten naar een 'PHP-getal'
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
- SanThe -

- SanThe -

12/02/2008 16:45:00
Quote Anchor link
Ik heb ook even $key en $waarde goed gezet.
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
16
17
18
19
20
21
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$voorbeeld = Array("12.50","12.50","0","12.50","10000");

function
ArrayCount($array)
{

    $getal = 0;
    
    foreach($array as $key => $waarde)
    {

        $getal = $getal + $waarde;
    }

    
    return $getal;
}


echo number_format(ArrayCount($voorbeeld), 2, ',', '.');
    
?>

Getest. Geeft als uitkomst: 10.037,50

Edit:
pgFrank schreef op 12.02.2008 16:37:
Wat is er mis met de functie array_sum() ?
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Wout van der Burg

Wout van der Burg

12/02/2008 16:48:00
Quote Anchor link
Ik heb em!
Ik heb nu gewoon eerst de waarden welke ik eerst in de array stopte vanuit de database, dmv een str_replace(); omgezet naar een 'PHP-getal'

de functie ziet er nu zo uit en werkt prima:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    function ArrayCount($array) {
        
        $getal = array_sum($array);
        return number_format($getal,2,",",'.');
        
    }

?>


edit:
Bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
- SanThe -

- SanThe -

12/02/2008 16:52:00
Quote Anchor link
Zo werkt ie met 10.000 en 15,50.
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
16
17
18
19
20
21
22
23
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$voorbeeld = Array("12,50","12,50","0","12,50","10.000");

function
ArrayCount($array)
{

    $getal = 0;
    
    foreach($array as $key => $waarde)
    {

        $waarde = str_replace('.', '', $waarde);
        $waarde = str_replace(',', '.', $waarde);    
        $getal = $getal + $waarde;
    }

    
    return $getal;
}


echo number_format(ArrayCount($voorbeeld), 2, ',', '.');
    
?>
 



Overzicht Reageren