Avatar billede blyant Nybegynder
14. november 2003 - 17:19 Der er 9 kommentarer og
1 løsning

Object orienteret på total begynder stadie!

Hej

Jeg har anskaffet mig bogen SAMS Teach yourself PHP in 24 hours, og er nu noget til et kapitel om objects.
Jeg tror at der er blevet skiftet forfatter midt i bogen, fordi dette kapitel er skrevet utrolig dårligt i forhold til resten af bogen. Nå, men nok om det.

Jeg har prøvet at lave et af de eksempler som de bruger i bogen, men det virker bare ikke.

Det er meningen at scriptet skal udskrive en tabel, men hver gang jeg prøver at hente siden står der bare:
Fatal error: Call to undefined function: output() in d:\apache\apache\htdocs\undervisning\objects2.php on line 78

Koden ser således ud:

<?php

class Table
{
var $headers = array();
var $table_array = array();
var $cols;

function Table($headers)
{
$this->headers = $headers;
$this->cols = count($headers);
}

function addRow($row)
{
if(count($row) != $this->cols)
return false;
array_push($this->table_array, $row);
return true;
}

function addAssocArray($row_assoc)
{

$row = array();

foreach($this->headers as $header)
{

if(! isset($row_assoc[$header]))
{
$row_assoc[$header] = "";
$row[] = $row_assoc[$header];
}

array_push($this->table_array, $row);

return true;
}

function output()
{

foreach($this->headers as $header)
{

Echo "$header";
Echo "<br>";

foreach($this->table_array as $y)
{

foreach($y as $xcell)
{
Echo "$final_output";
Echo "<br>";
}

}

}

}

}

}

$class = new Table( array("a","b","c") );
$class->addRow( array(1,2,3) );
$class->addAssocArray( array(a=>4, b=>5, c=>6) );

$class->output();

?>

Det ville også være rart, hvis nogen kunne fortælle mig lidt om isset() funktionen, som bliver brugt i addAssocArray funktionen.

Tak.
Avatar billede blyant Nybegynder
14. november 2003 - 17:23 #1
Spørgsmålet er selvfølgelig hvor scriptet ikke virker :)
Avatar billede blyant Nybegynder
14. november 2003 - 17:29 #2
Jeg er godt klar over at:

foreach($y as $xcell)
{
Echo "$final_output";
Echo "<br>";

skal udskiftes med:
foreach($y as $xcell)
{
Echo "$xcell";
Echo "<br>";

men det er ikke det der er problemet.
Avatar billede erikjacobsen Ekspert
14. november 2003 - 17:36 #3
Du skal bare skrive rigtigt af - du har rod i dine {...}-ere
Avatar billede blyant Nybegynder
14. november 2003 - 17:57 #4
Jo, jeg har også skrevet scriptet rigtigt af en gang og så virker det fint, men jeg lærer jo ikke meget af bare at skrive af.
Jeg vil jo gerne forstå scriptet, ikke bare skrive det.
Avatar billede erikjacobsen Ekspert
14. november 2003 - 18:06 #5
Jeg fortæller dig bare hvad der er galt.

Har forfatteren af bogen ikke gjort noget, så det er nemmere at se
hvilke {...}-ere der hører sammen.
Avatar billede blyant Nybegynder
14. november 2003 - 18:11 #6
Nej, ikke lige umiddelbart.
Jeg kan godt se, at der er en forfærdelig masse }-ere i enden af scriptet, en del flere end der er i bogen, men hvis jeg fjerner nogle af dem kommer der bare flere fejlmelinger.
Avatar billede erikjacobsen Ekspert
14. november 2003 - 18:32 #7
Det er jo ikke kun antallet, men hvor de står. Jeg er sikker på at du
har skrevet forkert af.

Jeg tror nu nok forfatteren til din bog rykker ind på linierne, så man
kan se hvilke {...}-ere der hører sammen, og som dermed danner strukturen.
Den funktion, den brokker sig over, står nemlig forkert.
Avatar billede blyant Nybegynder
14. november 2003 - 18:42 #8
Du har fuldstændig ret.
Hvis du vil have points så lig et svar
Avatar billede erikjacobsen Ekspert
14. november 2003 - 18:49 #9
Ja, selvfølgelig har jeg ret...*g* men du fandt det jo selv. Ingen point tak.
Brug dem en anden gang.
Avatar billede blyant Nybegynder
14. november 2003 - 18:55 #10
Okay, men tak for hjælpen så.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester