Variabel aantal argumenten

Status
Niet open voor verdere reacties.

John83

Gebruiker
Lid geworden
18 dec 2008
Berichten
150
Heren,

Ik moet een opdracht maken, maar kom er niet uit.
Moet een functie schijven die een variabel aantal argumenten kan ontvangen. Deze functie roept met verschillende aantallen argumenten aan en schrijf de waarden van de argumenten in een lus naar scherm. Neem in de lus tevens een opdracht op die het gegevenstype van het argument op het scherm toont (integer, string, enz.)

Ik heb al een stukje code geschreven, maar kom er nog niet helemmaal uit.
PHP:
<?php
function test_functie(){
$mijn_array = array(0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
}
test_functie("aap", "boot", 13, 17.4, true, $mijn_array);
?>
Graag jullie hulp.

Groet,

John83
 
Laatst bewerkt door een moderator:
Je kunt func_get_args() gebruiken.
 
Klopt, heb nu de volgende code:
PHP:
<?php
function test_functie(){
$mijn_array = array(0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
$aantal_args = func_num_args();
  echo("bij deze aanroep werden $aantal_args argumenten meegegeven.<br>\n");
  if($aantal_args >=3){
    echo("Het derde argument is: <b>".func_get_arg(2). "</b>,<br>\n");
    }
  $arg_lijst = func_get_arg();
  for($i = 0; Si < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>
Internet explorer kan de pagina niet openen.
Wat doe ik fout?

John83
 
Laatst bewerkt door een moderator:
Heb je error_reporting aanstaan?

Het is overigens ook wel handig als je wat overzichtelijker programmeert en je code hier tussen [PHP ] en [/ PHP] zet.
 
Is dat letterlijk de melding die je krijgt?

Kun je een kopie van de tekst maken?

En kun je [ php] tags om je code heenzetten? Dan is ie beter leesbaar.
PHP:
<?php
function test_functie(){
  $mijn_array = array(0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
  $aantal_args = func_num_args();
  echo("bij deze aanroep werden $aantal_args argumenten meegegeven.<br>\n");
  if($aantal_args >=3){
    echo("Het derde argument is: <b>".func_get_arg(2). "</b>,<br>\n");
  }
  $arg_lijst = func_get_arg();
  for($i = 0; Si < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);



[b]edit[/b] tegelijk gereageerd, zie ik :P
?>

Er staat overigens in je for-loop niet $i, maar Si, dat is wel iets waar de parser over zal struikelen, maar dan zou je een fatal error moeten krijgen.
 
$arg_lijst = func_get_arg();

Dat klopt ook niet. Dat moet func_get_args() zijn, func_get_arg() is voor een specifiek argument.
 
Frats heeft gelijk, hij doet het nu wel, maar nu krijg ik geen antwoord op de argument.
zie hier de uitkomst op ie.

bij deze aanroep werden 6 argumenten meegegeven.
Het derde argument is: 13,
Argument 0 is:
Argument 1 is:
Argument 2 is:
Argument 3 is:
Argument 4 is:
Argument 5 is:

John83
 
Volgens mij heb ik ook gelijk. :')

Probeer het eens met func_get_args(), niet met func_get_arg, zoals ik al aangaf.
 
klopt, maar werkt nog niet helemaal
bij deze aanroep werden 6 argumenten meegegeven.
Het derde argument is: Array,
Argument 0 is:
Argument 1 is:
Argument 2 is:
Argument 3 is:
Argument 4 is:
Argument 5 is:

Er moet een uitvoer komen
Argument 0 is: aap type string
argument 1 is: boot type string
enz.

John83
 
Laatst bewerkt:
Ik heb gevonden wat er moest gebeuren, maar nu loopt hij door, het moet eindigen bij 4:
PHP:
<?php
function test_functie(){
  $aantal_args = func_num_args();
  $arg_lijst = func_get_args();
  for($i = 0; $i < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  } 
$mijn_array = array(0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
  for($i = 0; $i < $mijn_array; $i++){
    echo("Inhoud element $i <b>".$mijn_array[$i]."</b><br>\n");
    }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>

Uitvoer:
Argument 0 is:aap
Argument 1 is:boot
Argument 2 is:13
Argument 3 is:17.4
Argument 4 is:1
Argument 5 is:
Inhoud element 0 geel
Inhoud element 1 rood
Inhoud element 2 groen
Inhoud element 3 blauw
Inhoud element 4
Inhoud element 5
Inhoud element 6
Inhoud element 7
Inhoud element 8
Inhoud element 9
Inhoud element 10
enz.

Hij stopt niet meer en blijft door gaan met tellen. Ik heb het gevoel dat ik wat vergeten ben, maar wat, alles een beetje nagekeken, maar kom er niet uit.

Hopelijk iemand anders wel.

John83
 
Laatst bewerkt:
PHP:
for($i = 0; $i < $mijn_array; $i++){

Je kunt niet 'kleiner dan array' doen, je moet count( $mijn_array ) gebruiken.
 
Denk je zelf niet dat het dan handig is als je die parse error plaatst, plus de regel waar die error vandaan komt?
 
Ik snap er nog steeds nog niks van, ik heb vanalles geprobeert, met count, maar hij blijf steeds door lopen, zijn er nog meer mogelijk heden?

PHP:
<?php

function test_functie(){
  $aantal_args = func_num_args();
  $arg_lijst = func_get_args();
  for($i = 0; $i < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  } 
$mijn_array = array (0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
  for ($i = 0; $i < $mijn_array; $i++){
    echo ("Inhoud element $i <b>".$mijn_array[$i]."</b><br>\n");
    }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>

John83
 
Je kunt nog altijd een foreach loop gebruiken ipv een for?

PHP:
<?php
 
function test_functie(){
  $aantal_args = func_num_args();
  $arg_lijst = func_get_args();
  for($i = 0; $i < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  } 
$mijn_array = array (0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
  foreach( $mijn_array as $element ) {
    echo ("Inhoud element $i <b>".$element."</b><br>\n");
    }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>
 
Ik heb het bijna voor elkaar, maar hij geeft nog wel een melding:
PHP Notice: Undefined variable: mijn_array in (mijn_bestandsnaam).php on line 24.
Iemand nog een idee?

Groet,

John83

PHP:
<?php
function test_functie(){
  $aantal_args = func_num_args();
  $arg_lijst = func_get_args();
  for($i = 0; $i < $aantal_args; $i++){
    echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
  } 
$mijn_array = array (0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
  for($i = 0; ; $i++){
  if($i < 3){
  break;
  }
  }
  foreach ($mijn_array as $element){
    echo ("Inhoud element $i <b>".$element."</b><br>\n");
    $i++;
    }
}
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>
 
<?php
function test_functie(){
$aantal_args = func_num_args();
$arg_lijst = func_get_args();
for($i = 0; $i < $aantal_args; $i++){
echo("Argument $i is:<b>".$arg_lijst[$i]."</b><br>\n");
}

for($i = 0; ; $i++){
if($i < 3){
break;
}
}
foreach ($mijn_array as $element){
echo ("Inhoud element $i <b>".$element."</b><br>\n");
$i++;
}
}

$mijn_array = array (0=> "geel", 1=> "rood", 2=> "groen", 3=> "blauw");
test_functie ("aap", "boot", 13, 17.4, true, $mijn_array);
?>
 
Je maakt een aanroep naar $mijn_array in de aanroep van test_functie(), maar die variabele bestaat alleen binnen de functie, niet daarbuiten.

Tis een scope probleem dus :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan