Knut_F Skrevet 6. oktober 2009 Del Skrevet 6. oktober 2009 Jeg skulle gjerne ha lagd en funksjon noe i denne duren function test($var->navn, $var->alder) { kode.... } Men da får jeg feil. derfor må jeg bytte ut $var->navn med $navn, og $var->alder med $alder. Lar det seg ikke gjøre og bruke Array'er? Lenke til kommentar
Yankes Skrevet 6. oktober 2009 Del Skrevet 6. oktober 2009 (endret) Jo, du kan bruke array $navn = array("Nils", "Per", "Ola"); $alder = array("15", "21", "32"); function test($navn, $alder) { kode.. } Endret 6. oktober 2009 av YaNkEs Lenke til kommentar
Knut_F Skrevet 6. oktober 2009 Forfatter Del Skrevet 6. oktober 2009 Jo, du kan bruke array $navn = array("Nils", "Per", "Ola"); $alder = array("15", "21", "32"); function test($navn, $alder) { kode.. } Men jeg ville lage en funksjon som fungerte noe i denne duren: function test($var->navn, $var->alder) { foreach($var as $var_name => $value) { ......... } } Lenke til kommentar
Jonas Skrevet 6. oktober 2009 Del Skrevet 6. oktober 2009 (endret) Say whaaat? Jeg er 100% sikker på at det går ann å gjøre akkurat det du vil, men du formulerer deg litt rart. «Noe i den dur» gir liksom ikke så mye mening når koden du skriver ikke bærer noe resemblance til noe annen kode jeg har sett. Du kan fint iterere gjennom en liste på følgende måte. function test ( $people ) { foreach ( $people as $person ) { echo $person['name']; echo $person['age']; } } Endret 6. oktober 2009 av Jonas Lenke til kommentar
Knut_F Skrevet 6. oktober 2009 Forfatter Del Skrevet 6. oktober 2009 Say whaaat? Jeg er 100% sikker på at det går ann å gjøre akkurat det du vil, men du formulerer deg litt rart. «Noe i den dur» gir liksom ikke så mye mening når koden du skriver ikke bærer noe resemblance til noe annen kode jeg har sett. Du kan fint iterere gjennom en liste på følgende måte. function test ( $people ) { foreach($people as $person) { echo $person['name']; echo $person['age']; } } Jeg veit jeg formulerer meg dårlig Vanskelig å sette ord på det jeg prøver på, når man er amatør Det jeg prøver på er å lage en array inne i parantesene som dette function test($var->name, $var->alder) på denne måten kan jeg bruke foreach($var...) inne i funksjonen. Sorry at jeg er så dårlig til å forklare. Lenke til kommentar
Jonas Skrevet 6. oktober 2009 Del Skrevet 6. oktober 2009 Jeg forstår fortsatt ikke helt hva du mener. Og jeg tror det blir lettere å forstå dersom du viser oss nøyaktig hva slags data du ønsker å gi til funksjonen. Poster et par eksempler, så kanskje du ser det på egenhånd. <?php function Foo ( $people ) { foreach ( $people as $person ) { echo $person['name']; echo $person['age']; } } $people = array ( array ( 'name' => 'Ola Nordmann', 'age' => 21 ), array ( 'name' => 'Kari Nordmann', 'age' => 50 ) ); Foo ( $people ); ?> <?php function Bar ( $people ) { $people = (array)$people; foreach ( $people as $person ) echo $person; } $people = array ( 'Ola Nordmann', 'Kari Nordmann' ); $person = 'Kari Nordmann'; Bar ( $people ); Bar ( $person ); ?> Lenke til kommentar
Knut_F Skrevet 6. oktober 2009 Forfatter Del Skrevet 6. oktober 2009 Okay. Det jeg prøver på er å lage en template class. class tmpl { var $con; var $set; var $vars; var $query; var $content; var $fhandle; function tmpl( $h, $u, $p, $d, $t, $f ) { $this->set->h = $h; $this->set->u = $u; $this->set->p = $p; $this->set->d = $d; $this->set->t = $t; $this->set->f = $f; } function sqlc() { $sql_connect = @mysql_connect( $this->set->h, $this->set->u ,$this->set->p ); if ( $sql_connect && @mysql_select_db( $this->set->d, $sql_connect ) ) $this->con = $sql_connect; else $this->con = false; return $this->con; } function sqlcheck() { if ( $this->con ) return $this->con; else return false; } function sqlq( $query ) { if ( $this->con ) { if ( $sqlqreturn = mysql_query( $query, $this->con ) ) $this->query = $sqlqreturn; else $this->query = false; return $this->query; } } function insert() { foreach ( $this->vars as $varname => $repl ) { $this->content = preg_replace( "/{(\s)*".$varname."(\s)*}/i",$repl,$this->content ); } } function exc() { $this->fhandle = @fopen( $this->set->f, "r" ); if ( $this->fhandle ) { $this->content = fread( $this->fhandle, filesize( $this->set->f ) ); $this->insert(); echo $this->content; } else { $this->fhandle = false; return $this->fhandle; } } function setvar( $varname, $value) { $this->vars->$varname = $value; } }; Jeg prøvde å lage den tmpl funksjonen litt mer elegant: function tmpl( $var->h, $var->u, $var->p, $var->d, $var->t, $var->f) { foreach( $var as $var_name => $value ) { $this->set->$var_name = $value; } } Men får bare feil. Lenke til kommentar
Jonas Skrevet 6. oktober 2009 Del Skrevet 6. oktober 2009 (endret) Ah, vel. Tillat meg å komme med et forslag. Istedenfor å instansiere klassen på følgende måte. $foo = new tmpl ( $arg1, $arg2, ..., $arg131423 ); .. så gjør du det heller på denne måten. <?php $foo = new tmpl ( array ( 'arg1' => $my_var1, 'arg2' => $my_arg2, 'arg3' => $my_arg3, . . . 'arg131423' => $my_arg131423, ) ); ?> Du vil da kunne skrive om constructern og oppnå det du ser ut til å ønske. function tmpl ( $data ) { foreach ( $data as $var => $val ) $this -> set -> {$var} = $val; } Edit: I dette tilfelle er både navnet på argumentet og verdien helt vesentlig, men dersom man kun var interessert i verdien, så kunne man dratt nytte av dynamiske argumenter. Endret 6. oktober 2009 av Jonas Lenke til kommentar
Knut_F Skrevet 6. oktober 2009 Forfatter Del Skrevet 6. oktober 2009 Ah, vel. Tillat meg å komme med et forslag. Istedenfor å instansiere klassen på følgende måte. $foo = new tmpl ( $arg1, $arg2, ..., $arg131423 ); .. så gjør du det heller på denne måten. <?php $foo = new tmpl ( array ( 'arg1' => $my_var1, 'arg2' => $my_arg2, 'arg3' => $my_arg3, . . . 'arg131423' => $my_arg131423, ) ); ?> Du vil da kunne skrive om constructern og oppnå det du ser ut til å ønske. function tmpl ( $data ) { foreach ( $data as $var => $val ) $this -> set -> {$var} = $val; } Takk takk. Dat var et nyttig tips:D Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå