Ik heb hier een functie van phptuts overgeschreven.
alleen werkt het niet zoals het zou moeten volgens phptuts.
Ik zit hier al een uur naar te kijken en heb het al een keer opnieuw geschreven.
Maar nog steeds zie ik niet waar ik de fout heb zitten.

Wie ziet de fout en nog belangrijker hoe vind je die.

Groet René

<?php
function totaal($bedragen, $btw = false)
{
$ftotaal = array_sum($bedragen);

if($btw)
{
$ftotaal *= 1.19;
}

return number_format($ftotaal, 2);
}

$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';



?>
Wellicht bedoel je dit:


<?php
function totaalincl($bedragen, $btw = true)
{
    $ftotaal = array_sum($bedragen);
    
    if($btw)
    {
        $ftotaal *= 1.19;
    }
    
    return number_format($ftotaal, 2);
} 

$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal incl. btw: '.totaalincl($bedragen).'<br>';
echo 'totaal excl. btw: '.array_sum($bedragen), true.'<br>';
?>

Edit: Kon korter, aangepast.
Hoi Peter,
kun je ook aangeven wat anders aan is?
BTW is standaard op true gezet.
Zeker.

2 dingen:

- Je wilt de BTW inclusief en exclusief weten.
Exclusief BTW is in jouw geval het bedrag wat ingevuld wordt in de array van $bedragen. array_sum telt ze bij elkaar op.
Inclusief btw is in dit voorbeeld 19% meer (1.19). $btw stond op false, met true rekent hij die erbij. if($btw) was false, nu true. $ftotaal is dus de array_sum(Regel 4) * 1.19 = Bedrag inclusief btw ;)
nu doet het script alleen incl btw
Ik bedoel eigenlijk.
De code heb ik van phptuts.
Deze heb ik overgeschreven met iets andere variabel namen.
De uitkomst is nu niet wat het volgens het orgineel script moet zijn.

Mijn vraag is nu: Wat heb ik in het bovenste scriptje anders gedaan. (want de uitkomst is niet het zelfde)
hier onder staat het orgineel scriptje van phptuts.

<?php
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);

// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}

// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}

// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';
?>
$bBtw is nogsteeds false, want die is altijd false in je script.
Beste Peter,
In het laatste scriptje is alles goed en werkt het zoals het hoort.
In het eerste scriptje is iets anders,want dit werkt niet zoals het hoort.
Waar heb ik een foutje gemaakt?
Kun je dat aangeven door b.v. het regelnr te noemen?
Op regel 3 zeg je "$sBtw = false". Die is dus altijd false, dus zal er nooit BTW worden berekend.
Op regel 22 zeg je "$aBedragen, true". True is hier dus niet op zijn plaats omdat deze niet wordt gevraagd in de functie.
@Peter, Dat betekend niet dat $sBtw altijd false is. Dat betekend dat de default waarde van $sBtw false is. http://php.net/manual/en/functions.arguments.php#functions.arguments.default

@Rene
http://3v4l.org/KYWtn:
<?php
function totaal($bedragen, $btw = false)
{
$ftotaal = array_sum($bedragen);

if($btw)
{
$ftotaal *= 1.19;
}

return number_format($ftotaal, 2);
}

$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';

// 15-16 kunnen we ook zo schrijven:
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo '<br>';
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo true; // het zelfde als echo '1';
echo '<br>';

?>

<?php
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);

// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}

// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}

// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';

// 48-49 kunnen we ook zo schrijven:
echo 'Totaal excl. BTW: ';
echo calcTotaal($aBedragen);
echo '<br />';
echo 'Totaal incl. BTW: ';
echo calcTotaal($aBedragen, true);
echo '<br />';
?>
Rene janssen op 21/11/2014 14:38:50

Wie ziet de fout en nog belangrijker hoe vind je die.
<?php
function totaal($bedragen, $btw = false)
{
$ftotaal = array_sum($bedragen);

if($btw)
{
$ftotaal *= 1.19;
}

return number_format($ftotaal, 2);
}

$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';
?>


Haakje staat verkeerd.
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';
Moet zijn:
echo 'totaal excl. btw: '.totaal($bedragen, true).'<br>';

Reageren