Gå til innhold

Lage funksjoner i php?


Anbefalte innlegg

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
Videoannonse
Annonse
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

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. :p

 

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 av Jonas
Lenke til kommentar
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. :p

 

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 :p 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

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

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

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 av Jonas
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...