[class] meer personen?
lasdesigner - 08/05/2006 18:32
PHP beginner
Hallo, ik ben bezig met een scriptje (zodat Nemesiskoen ook nog wat te doen heeft ).
Ik wil dus (om te oefenen) een soort van klaslokaal maken. Waarin MEERDERE gegevens opgeslagen worden. Ik heb nu dit.
<?php
class Klas {
public $Aantalleerlingen = 0;
public $leerling;
private $leeftijd;
public function NieuwLeerling($naam, $leeftijd) {
$this->Aantalleerlingen++;
$this->leerling = $naam;
$this->leeftijd = $leeftijd;
}
public function VerwijderLeerling($naam) {
$this->aantalLeerlingen = ($this->Aantalleerlingen - 1);
}
public function Namen() {
$namen = array($this->leerling);
for($i = 0; $i < count($namen); $i++) {
echo $namen[$i]. "<BR />";
}
}
private function LeeftijdBijNaam($naam) {
$leeftijd = $this->leeftijd;
return $leeftijd;
}
public function NamenVijftien() {
$allenamen = array($this->leerling);
for($i = 0; $i < count($allenamen); $i++) {
$leeftijdje = Klas::LeeftijdBijNaam($allenamen[$i]);
if($leeftijdje == 15) {
echo $allenamen[$i];
}
}
}
}
$ghv3a = new Klas;
$ghv3a->NieuwLeerling('Luuk', 15);
$ghv3a->NieuwLeerling('Coen', 15);
$ghv3a->NamenVijftien();
?>
<?php
class Klas {
public $Aantalleerlingen = 0 ;
public $leerling ;
private $leeftijd ;
public function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantalleerlingen ++;
$this -> leerling = $naam ;
$this -> leeftijd = $leeftijd ;
}
public function VerwijderLeerling( $naam ) {
$this -> aantalLeerlingen = ( $this -> Aantalleerlingen - 1 ) ;
}
public function Namen( ) {
$namen = array ( $this -> leerling ) ; for ( $i = 0 ; $i < count ( $namen ) ; $i ++ ) { echo $namen [ $i ] . "<BR />" ; }
}
private function LeeftijdBijNaam( $naam ) {
$leeftijd = $this -> leeftijd ;
return $leeftijd ;
}
public function NamenVijftien( ) {
$allenamen = array ( $this -> leerling ) ; for ( $i = 0 ; $i < count ( $allenamen ) ; $i ++ ) { $leeftijdje = Klas:: LeeftijdBijNaam ( $allenamen [ $i ] ) ;
if ( $leeftijdje == 15 ) {
}
}
}
}
$ghv3a = new Klas;
$ghv3a -> NieuwLeerling ( 'Luuk' , 15 ) ;
$ghv3a -> NieuwLeerling ( 'Coen' , 15 ) ;
$ghv3a -> NamenVijftien ( ) ;
?>
Maar hij geeft alleen Coen weer.. Wat doe ik verkeerd?
10 antwoorden
Gesponsorde links
Simon - 08/05/2006 18:37
PHP expert
$naam en $leeftijd zijn geen array's, dus overschrijft hij ze telkens
lasdesigner - 08/05/2006 18:40 (laatste wijziging 08/05/2006 18:45)
PHP beginner
[edit] Sorry van dubbelpost, klikte 2 keer op de button, moest nog gauw [/ code] erachter zetten!
Dus kan dit:
<?php
class Klas {
public $Aantalleerlingen = 0;
public $leerling = array();
private $leeftijd = array;
?>
<?php
class Klas {
public $Aantalleerlingen = 0 ;
public $leerling = array ( ) ; private $leeftijd = array ; ?>
Sitefoon - 08/05/2006 18:45 (laatste wijziging 08/05/2006 18:46)
Nieuw lid
simon bedoeld dat je beter dit kunt doen:
<?php
class Klas {
public $Aantalleerlingen = 0;
public $leerling = array();
private $leeftijd = array();
public function NieuwLeerling($naam, $leeftijd) {
$this->Aantalleerlingen++;
$this->leerling = $naam[$aantalleerlingen];
$this->leeftijd = $leeftijd[$aantalleerlingen];
}
<?php
class Klas {
public $Aantalleerlingen = 0 ;
public $leerling = array ( ) ; private $leeftijd = array ( ) ;
public function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantalleerlingen ++;
$this -> leerling = $naam [ $aantalleerlingen ] ;
$this -> leeftijd = $leeftijd [ $aantalleerlingen ] ;
}
lasdesigner - 08/05/2006 18:58
PHP beginner
Mmm.. oké? Maar dan komt toch niet de eigen naam erin? Ik doe nu namelijk zo:
<?php
class Klas {
public $Aantal;
public $Naam = array();
private $Leeftijd = array();
function NieuwLeerling($naam, $leeftijd) {
$this->Aantal++;
array_push($this->naam, $naam);
array_push($this->leeftijd, $leeftijd);
}
function Namen() {
for($i = 0; $i < count($this->Naam); $i++) {
echo $this->Naam[$i];
}
}
}
$ghv3a = new Klas;
$ghv3a->NieuwLeerling('luuk', 15);
$ghv3a->NieuwLeerling('coen', 17);
$ghv3a->Namen();
?>
<?php
class Klas {
public $Aantal ;
private $Leeftijd = array ( ) ;
function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantal ++;
}
function Namen( ) {
for ( $i = 0 ; $i < count ( $this -> Naam ) ; $i ++ ) { }
}
}
$ghv3a = new Klas;
$ghv3a -> NieuwLeerling ( 'luuk' , 15 ) ;
$ghv3a -> NieuwLeerling ( 'coen' , 17 ) ;
$ghv3a -> Namen ( ) ;
?>
maar dit werkt niet..?
Sitefoon - 08/05/2006 19:00 (laatste wijziging 08/05/2006 19:00)
Nieuw lid
<?php
class Klas {
public $Aantal = 0;
public $leerling = array();
private $leeftijd = array();
public function NieuwLeerling($naam, $leeftijd) {
$this->Aantal++;
$this->leerling = $naam[$aantalleerlingen];
$this->leeftijd = $leeftijd[$aantalleerlingen];
}
<?php
class Klas {
public $Aantal = 0 ;
public $leerling = array ( ) ; private $leeftijd = array ( ) ;
public function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantal ++;
$this -> leerling = $naam [ $aantalleerlingen ] ;
$this -> leeftijd = $leeftijd [ $aantalleerlingen ] ;
}
Stijn - 08/05/2006 19:00
PHP expert
euhm juist omgekeerd zekers
<?php
class Klas {
public $Aantalleerlingen = 0;
public $leerling = array();
private $leeftijd = array();
public function NieuwLeerling($naam, $leeftijd) {
$this->Aantalleerlingen++;
$this->leerling[ ] = $naam; //voegt één toe
$this->leeftijd[ ] = $leeftijd; //voegt één toe
}
...
<?php
class Klas {
public $Aantalleerlingen = 0 ;
public $leerling = array ( ) ; private $leeftijd = array ( ) ;
public function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantalleerlingen ++;
$this -> leerling [ ] = $naam ; //voegt één toe
$this -> leeftijd [ ] = $leeftijd ; //voegt één toe
}
...
@sitefoon: waar haal jij $aantalleerlingen vandaan je bedoelt zekers $this->Aantalleerlingen.
Sitefoon - 08/05/2006 19:02
Nieuw lid
ja, ik ken eigenlijk weinig van classen daarom en ja dit is gewoon normale php (maar dan met $this>aantal)
lasdesigner - 08/05/2006 19:04 (laatste wijziging 08/05/2006 19:06)
PHP beginner
Gelukt, dank je stijn!
Voor de mensen die het antwoord willen weten:
<?php
class Klas {
public $Aantal;
public $Naam = array();
private $Leeftijd = array();
function NieuwLeerling($naam, $leeftijd) {
$this->Aantal++;
$this->Naam[ ] = $naam;
$this->Leeftijd[ ] = $leeftijd;
}
function Namen() {
for($i = 0; $i < count($this->Naam); $i++) {
echo $this->Naam[$i]. "<BR />";
}
}
function NaamVijftien() {
for($i = 0; $i < count($this->Naam); $i ++) {
if($this->Leeftijd[$i] == 15) {
echo $this->Naam[$i]. "<BR />";
}
}
}
}
$ghv3a = new Klas;
$ghv3a->NieuwLeerling('luuk', 15);
$ghv3a->NieuwLeerling('coen', 17);
$ghv3a->NieuwLeerling('carolien', 15);
$ghv3a->NaamVijftien();
?>
<?php
class Klas {
public $Aantal ;
private $Leeftijd = array ( ) ;
function NieuwLeerling( $naam , $leeftijd ) {
$this -> Aantal ++;
$this -> Naam [ ] = $naam ;
$this -> Leeftijd [ ] = $leeftijd ;
}
function Namen( ) {
for ( $i = 0 ; $i < count ( $this -> Naam ) ; $i ++ ) { echo $this -> Naam [ $i ] . "<BR />" ; }
}
function NaamVijftien( ) {
for ( $i = 0 ; $i < count ( $this -> Naam ) ; $i ++ ) { if ( $this -> Leeftijd [ $i ] == 15 ) {
echo $this -> Naam [ $i ] . "<BR />" ; }
}
}
}
$ghv3a = new Klas;
$ghv3a -> NieuwLeerling ( 'luuk' , 15 ) ;
$ghv3a -> NieuwLeerling ( 'coen' , 17 ) ;
$ghv3a -> NieuwLeerling ( 'carolien' , 15 ) ;
$ghv3a -> NaamVijftien ( ) ;
?>
Edit Nog 1 ding.. Ze zeggen altijd dat je in classes (of de functies) niet mag echo'en. Hoe kan ik dit maken zonder in de classes te echo'en?
Maarten - 08/05/2006 19:19 (laatste wijziging 08/05/2006 19:20)
Erelid
Je mag het wel maar het is niet altijd even logisch.
Je kan dan wel return ipv echo gebruiken. Let wel: na return wordt niks meer uitgevoerd:
return 'murfy';
return 'vinTage is kool';
dat tweede zal niet meer weergegeven worden omdat het eerste dus je functie als het ware beëindigd (en ook omdat het niet waar is, maar dat doet er niet toe)
<?php
function demo() {
return 'aap';
}
// Om nu die aap op je scherm te krijgen doe je:
echo demo();
// Zelfde dus met die classen, als je dan echo ipv return gebruikt krijg je
echo $ghv3a->NaamVijftien();
?>
<?php
function demo( ) {
return 'aap' ;
}
// Om nu die aap op je scherm te krijgen doe je:
// Zelfde dus met die classen, als je dan echo ipv return gebruikt krijg je
echo $ghv3a -> NaamVijftien ( ) ; ?>
Gesponsorde links
Dit onderwerp is gesloten .