[PHP] Functie fout

Pagina: 1
Acties:

Onderwerpen


  • ijsthijs
  • Registratie: Juni 2003
  • Laatst online: 18-09 16:09
Hello,

voor een cijfersysteem wat ik aan het maken ben heb ik een functie nodig die het gemiddelde cijfer berekent vanuit een array met cijfers. Het is de bedoeling dat wanneer er een lege array tussen staat deze niet wordt meegeteld met het gemiddelde. Nu is echter mijn probleem dat ik onderstaande functie niet aan de praat krijg. De output is simpelweg 0.

// array met cijfers
$cijfer[] = "5";
$cijfer[] = "8";
$cijfer[] = "";
$cijfer[] = "9";
$cijfer[] = "";

// de functie, $van=beginnen in array $tot=stoppunt in array

function brkgem($van,$tot) {
$meetellen = array();
for($i = $van; $i < $tot; $i++) {
if($cijfer[$i] != "") {
$meetellen[] = "$cijfer[$i]";
}
}
$door = count($meetellen);
$gemiddelde = array_sum($meetellen)/$door;
echo $gemiddelde;
}
// de functie aanroep..
brkgem("0","5");

Ziet iemand wat er fout gaat in deze functie ?

eenechtezzper.nl


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

je array $cijfer is niet bekend in de functie brkgem, je kan em meegeven aan je functie

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • ijsthijs
  • Registratie: Juni 2003
  • Laatst online: 18-09 16:09
Euh, ik begrijp wat je bedoelt.... maar hoe geef ik die array mee ?

eenechtezzper.nl


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Net zoals je ook $van meegeeft...

  • 0528973
  • Registratie: Juni 2003
  • Laatst online: 15-05-2013
Hey,

Misschien heb je hier iets aan:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function berekenGemiddelde($bIndex, $eIndex, $cijfers, $ignore) {
if(!count($cijfers)) {
die("Er zitten geen elementen in de cijferarray");
}
if(!(array_key_exists($bIndex, $cijfers) && array_key_exists($eIndex, $cijfers))) {
die("De begin of eind-index bestaan niet in de cijferarray");//gooi even een errortje
}
if($bIndex > $eIndex) {
$tmpIndex = $bIndex;   
$bIndex = $eIndex;
$eIndex = $tmpIndex;
}
$berekenhierovergemiddelde = array_slice(array_diff($cijfers, $ignore),$bIndex,$eIndex);
return array_sum($berekenhierovergemiddelde) / count($berekenhierovergemiddelde);
}
$cijfers = array(1,2,3,4,"",5,"");
$ignore  = array(""," ");
print(berekenGemiddelde(2, 2, $cijfers, $ignore));
?>

Denk hier is over na ;), ik ga niet beweren dat dit de schoonheidsprijs moet winnen, maar dit doet hetgene wat je wilt ;)

[ Voor 98% gewijzigd door 0528973 op 12-02-2004 14:50 ]

Pascal


  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 11:52

AW_Bos

Liefhebber van nostalgie... 🕰️

mag ik even storen en een tip geven? gebruik eens de highlightfunctie voor dit script in dit forum.
offtopic:
Ik ken je van Webmensen :)

[ Voor 6% gewijzigd door AW_Bos op 12-02-2004 14:18 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • ijsthijs
  • Registratie: Juni 2003
  • Laatst online: 18-09 16:09
0528973 schreef op 12 februari 2004 @ 14:14:
Hey,

Misschien heb je hier iets aan:
code:
1
2
3
4
5
6
7
<?php
$cijfers = array(1,2,3,4,"",5,"");
$ignore  = array(""," ");
$berekenhierovergemiddelde = array_slice(array_diff($cijfers, $ignore),2,2);
$gemiddelde = array_sum($berekenhierovergemiddelde) / count($berekenhierovergemiddelde);
print($gemiddelde);
?>


Denk hier is over na ;), ik ga niet beweren dat dit de schoonheidsprijs moet winnen, maar dit doet hetgene wat je wilt ;)
Nou, het doet niet hetgene wat ik wil.. wat ik wil is een functie dat over een gedeelte van een array het gemiddelde berekend.. jouw voorbeeld geeft overigens uitkomst 13,5 bij mij.

eenechtezzper.nl


  • 0528973
  • Registratie: Juni 2003
  • Laatst online: 15-05-2013
ijsthijs, ik wil niet heel lullig doen, maar als je enigsinds de moeite zou nemen om te kijken wat het doet en waarom het doet, dan zie je dat array_slice($array, $bIndex, $eIndex) je de gewenste array oplevert... de array_diff aanroep alle lege("" of " ") element eruit filtert en dan het gemiddelde berekent door array_sum() te delen door count().

zoals je nu kan zien, heb ik het tevens omgezet naar een functie voor je. Persoonlijk had ik het idee, dat wat er stond wel door je omgezet kon worden naar een acceptabele en goed werkende functie.

@AW_Bos, hoe doe ik hier dat syntax highlighten activeren? Bovendien vraag ik me af of je me echt kent, aangezien ik webmensen helemaal niet ken. ;)

[ Voor 40% gewijzigd door 0528973 op 12-02-2004 14:29 ]

Pascal


  • ijsthijs
  • Registratie: Juni 2003
  • Laatst online: 18-09 16:09
0528973 schreef op 12 februari 2004 @ 14:25:
ijsthijs, ik wil niet heel lullig doen, maar als je enigsinds de moeite zou nemen om te kijken wat het doet en waarom het doet, dan zie je dat array_slice($array, $bIndex, $eIndex) je de gewenste array oplevert... de array_diff aanroep alle lege("" of " ") element eruit filtert en dan het gemiddelde berekent door array_sum() te delen door count().
Inderdaad, na jouw edit werd ik vrij stil ;-)

Maar in ieder geval super bedankt want her werkt perfect :-)

[ Voor 9% gewijzigd door ijsthijs op 12-02-2004 14:29 ]

eenechtezzper.nl


  • 0528973
  • Registratie: Juni 2003
  • Laatst online: 15-05-2013
@ijshtijs, graag gedaan ;)... denk in het vervolg even na voordat je commentaar gaat geven aub, ik heb echt het idee dat je van mijn eerste post zelf wel een functie met de juiste parameters had kunnen maken. En als een functie niet direct doet wat je denkt dat tie moet doen, kijk dan bijv. op nl.php.net eerst ff na wat alle onbekende functie aanroepen zouden moeten doen. Daar bespaar je mij en denk ook een boel anderen een heleboel frustraties mee... Maar alsnog, graag gedaan... veel plezier ermee ;)

Pascal


  • ijsthijs
  • Registratie: Juni 2003
  • Laatst online: 18-09 16:09
[bewerkt] dom gelul achteraf [/bewerkt]

=== closed

[ Voor 89% gewijzigd door ijsthijs op 12-02-2004 14:56 ]

eenechtezzper.nl

Pagina: 1