Functions voor toevoegen gegevens aan arrays...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lex Emmens

Lex Emmens

14/12/2008 16:18:00
Quote Anchor link
Voor school moeten wij met behulp van arrays een overzicht maken van docenten, kamernummers, telefoonnummers en vakgebieden.
Nu is dat niet direct het probleem, maar we moeten ook doormiddel van function VoegToe() dingen toevoegen aan die arrays.

En dat wil bij mij niet echt lukken... Ik heb zelf de volgende code weten op te stellen:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?
$wnamen
= array('Evelijn Visser', 'Gerda Achterop', 'Luc de Haan', 'Frederik Peppels');
$kamernummer = array(213,214,215,213);
$telefoon = array(4683,4677,'Unknown',4652);
$vak = array('Wiskunde', 'Nederlands', 'Unknown', 'Informatica');

function
VoegToe($nnaam,$nkamernummer,$ntelefoon,$nvak){
      if($nnaam == ""){ $nnaam = "Unknown"; }
      if($nkamernummer == ""){ $nkamernummer = "Unknown"; }
      if($ntelefoon == ""){ $ntelefoon = "Unknown"; }
      if($nvak == ""){ $nvak = "Unknown"; }
      
      array_push($wnamen, $nnaam);
      array_push($kamernummer, $nkamernummer);
      array_push($telefoon, $ntelefoon);
      array_push($vak, $nvak);
}

VoegToe("Docentnaam","Kamernummer","Telefoon","Vakgebied");



$i = 0;
echo "<table><tr>\n";
echo "<td><strong>Naam</strong></td>\n";
echo "<td><strong>Kamernummer</strong></td>\n";
echo "<td><strong>Telefoon</strong></td>\n";
echo "<td><strong>Vak</strong></td>\n";
echo "</tr>\n";

foreach($wnamen as $value){
      echo "<tr><td>$wnamen[$i]</td>\n";
      echo "<td>$kamernummer[$i]</td>\n";
      echo "<td>$telefoon[$i]</td>\n";
      echo "<td>$vak[$i]</td></tr>\n";
      $i++;
}


echo "</table>";
?>


In principe gaat alles goed, maar in bij de function geeft hij de volgende foutmeldingen:
Warning: array_push() [function.array-push]: First argument should be an array in D:\Xampp\htdocs\school\php2\2.php on line 8

Warning: array_push() [function.array-push]: First argument should be an array in D:\Xampp\htdocs\school\php2\2.php on line 9

Warning: array_push() [function.array-push]: First argument should be an array in D:\Xampp\htdocs\school\php2\2.php on line 10

Warning: array_push() [function.array-push]: First argument should be an array in D:\Xampp\htdocs\school\php2\2.php on line 11

Onder de foutmeldingen komen vervolgens netjes alle gegevens uit de bestaande arrays te staan.

Wat is er fout aan mijn functie? Ik ben nieuw op dit gebied, en hier kom ik nl. niet uit...
 
PHP hulp

PHP hulp

08/11/2024 09:33:40
 
- SanThe -

- SanThe -

14/12/2008 16:26:00
Quote Anchor link
Je array()'s zijn niet bekend in een function. Gebruik global.
 
Joren de Wit

Joren de Wit

14/12/2008 16:28:00
Quote Anchor link
Binnen de functie zijn de variabelen $wnamen, $kamernummer, $telefoon en $vak niet beschikbaar, ook al heb je ze buiten je functie aangemaakt.

Je zou het op kunnen lossen door de betreffende variabelen als global te declareren binnen je functie:
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
<?php
function VoegToe($nnaam,$nkamernummer,$ntelefoon,$nvak){
    global $wnamen;
    global $kamernummer;
    global $telefoon;
    global $vak;      

    if($nnaam == ""){ $nnaam = "Unknown"; }
      if($nkamernummer == ""){ $nkamernummer = "Unknown"; }
      if($ntelefoon == ""){ $ntelefoon = "Unknown"; }
      if($nvak == ""){ $nvak = "Unknown"; }
      
      array_push($wnamen, $nnaam);
      array_push($kamernummer, $nkamernummer);
      array_push($telefoon, $ntelefoon);
      array_push($vak, $nvak);
}

?>

Het is niet echt een nette oplossing, maar het zal wel werken...
 
Lex Emmens

Lex Emmens

14/12/2008 16:28:00
Quote Anchor link
Thx. Het werkt nu:)
 



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.