07. september 2003 - 19:14
Der er
20 kommentarer og 1 løsning
Funktion - hvordan ?
Hej. Jeg vil til at bruge funktioner. Men hvorfor virker dette ikke : <?php function tjek() { echo "Hej $nr"; } ?> <table cellspacing=2 cellpadding=2 border=1> <tr> <td><?php $nr = 5; tjek(); ?></td> <td></td> <td></td> </tr> </table>
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
07. september 2003 - 19:16
#1
Du er her : Eksperten : Programmering : Script : PHP : Funktion - hvordan ? : Funktion - hvordan ? 10 point fra webcreator Hej. Jeg vil til at bruge funktioner. Men hvorfor virker dette ikke : <?php function tjek($nr) { return "Hej $nr"; } ?> <table cellspacing=2 cellpadding=2 border=1> <tr> <td><?php $nr = 5; print tjek($nr); ?></td> <td></td> <td></td> </tr> </table>
07. september 2003 - 19:16
#2
Nå der kom en kende for meget med ;) Så fik vi også lidt underholdning i dag ...
07. september 2003 - 19:18
#3
det er den måde php fortolker variabel-scopet på. du skal gøre sådan: function tjek() { global $nr; echo "Hej $nr"; }
07. september 2003 - 19:18
#4
lol, du er god til at copy/paste :)
07. september 2003 - 19:20
#5
Erik > Heh, undrede mig også noget :) Kan jeg ikke bruge normal PHP med mindre jeg bruger Global på variablerne ? Jeg havde tænkt mig at bruge flg. i funktionene : $desk = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error()); $desks = mysql_fetch_array($desk); if ($desks["name"] == "") { echo "<td bgcolor=#008000>nr. $nr</td>"; } else { echo "<td bgcolor=#800000>nr. $nr</td>"; }
07. september 2003 - 19:21
#6
tag tingene med som parameter, det er kønnest og sikrest. "global" er selvfølgelig en mulighed, men kommer du ud over legetøjsstadiet vil det give dig flere problemer med mystiske fejl.
07. september 2003 - 19:23
#7
Dvs. min function vil se sådan ud : ?? function noget() { $desk = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error()); $desks = mysql_fetch_array($desk); if ($desks["name"] == "") { return "<td bgcolor=#008000>nr. $nr</td>"; } else { return "<td bgcolor=#800000>nr. $nr</td>"; } }
07. september 2003 - 19:24
#8
er enig med erik, brug parametre, hvis det er muligt.
07. september 2003 - 19:25
#9
function noget($nr) {
07. september 2003 - 19:28
#10
Ok, jeg er slet ikke med. Jeg vil gerne have en "pakke", som indeholder : $desk = mysql_query("SELECT * FROM tab WHERE tabb = '$nr'") or die(mysql_error()); $desks = mysql_fetch_array($desk); if ($desks["name"] == "") { return "<td bgcolor=#008000>nr. $nr</td>"; } else { return "<td bgcolor=#800000>nr. $nr</td>"; } - denne "pakke" (funktion) skal jeg så kunne indsætte hvor det passer mig. Men et er måske ligefrem bedre at smide det i en variabel
07. september 2003 - 19:29
#11
Hvad er det du er i tvivl om?
07. september 2003 - 19:32
#12
Jeg blev forvirret over, at du indsætter $nr i function navn($nr) - hvad skal den der ? Og jeg kan ikke finde ud af, om jeg kan bruge normal PHP i funktionen..
07. september 2003 - 19:35
#13
Det er helt normalt PHP. Så er $nr en parameter, og du kan kalde funktionen: print noget(5);
07. september 2003 - 19:36
#14
function test($nr){ echo $nr; } test(1); // udskriver 1 test(2); // udskriver 2
07. september 2003 - 19:37
#15
function test($nr, $bah){ echo $nr.$bah; } test(1, "en"); // udskriver "1en" test(2, "to"); // udskriver "2to"
07. september 2003 - 19:42
#16
Ah, nu er jeg med :)
07. september 2003 - 19:43
#17
Mange tak, begge 2. Erik smid et svar. Så sætter jeg lige points til 20, så i kan få 10 stærke hver :-)
07. september 2003 - 19:58
#18
:AFSLUTENDE KOMMENTAR: hvis funktionen skal 'ændre' en variabel der findes uden for funktionen skal variablen erklæres 'global', eller man skal bruge en pointer til denne som parameter ( &$variabel ) (:NOTE: har aldrig afprøvet pointere i PHP, men det skulle eftersigende virke fint) :WORK-AROUND: lave den så den returnere det ændrede, og så lave $foo = bar($foo); --- hvis variablen derimod bare skal bare skal udskrive noget er det bedst bare at bruge et normalt parameter, da der herved oprettes en kopi af variablen, så evt ændringer ikke vil afspejlese senere i scriptet! Morten
07. september 2003 - 20:07
#19
Morten > Jeg siger mange tak for den afsluttende kommentar. Vil jeg huske.
07. september 2003 - 20:09
#20
så lidt - intet bedre end at fjerne dårlige programmerings skikke - ser lige om jeg kan finde en artikkel om 'standarderne' for php kodning ;) Morten
07. september 2003 - 20:09
#21
Vi tilbyder markedets bedste kurser inden for webudvikling