webForumDet fria alternativet

Konstigt beteende vid utskrift via funktion

PHP

5 svar · 262 visningar · startad av decent

Medlem sedan nov. 200227 inlägg
Frågan#1

Blev lite fundersam för några dagar sedan när en kodrad inte betedde sig som jag hade önskat. Skapade en funktion som tog ett numeriskt värde och skrev ut det textvärde som var kopplat till numret. Liknande att skapa en funktion skrivutmanad(x) som skriver ut namnet på månad x.

Hur som helst. Det som gjorde mig förvirrad var något likande nedstående rad:

print("<font class=\"fetstil\">".skrivutmanad(3)."</font>");

Detta resulterade i att HTML-koden blev
April<font class="fetstil"></font>
och inte
<font class="fetstil">April</font>
som önskat. Jag har arbetat mig runt det med är mest nyfiken vad som orsakar beteendet. Kör för övrigt PHP 4.3.0 på den servern.

Funktionen som anropades var för övrigt en switch-sats men resultatet blir detsamma även om jag bara skriver en print("HEJ!") i debug-syfte.

Vore kul att få veta vad som orsakar det här :)

Medlem sedan sep. 20011 086 inlägg
#2

Istället för print() i skrivutmanad() så ska du returnerna värdet. Dvs: return "April" osv...

Medlem sedan nov. 200227 inlägg
#3

Blev ju den lösning jag fick använda till slut förstås men jag funderar mest varför min andra lösning genererar ett så konstigt beteende. :)

Medlem sedan dec. 2003153 inlägg
#4

Det är väl egentligen inget konstigt. För att den ska kunna skriva ut raden måste den först kontrollera vad som finns på raden. Om du har ett funktionsanrop måste den utföra det innan den kan skriva ut raden. Om du då i funktionen skriver ut ett värde med echo eller print så kommer det ju skrivas ut före resten av raden skrivs ut.

Medlem sedan mars 20032 667 inlägg
#5

pimme skrev:

Istället för print() i skrivutmanad() så ska du returnerna värdet. Dvs: return "April" osv...

Eller så kan man se det som en procedur eller subrutin eller en metod utan returvärde.

Medlem sedan nov. 200227 inlägg
#6

lunnes svar lät tillräckligt rimligt för mig. :)
Rent av klokt, det tackar vi för.

273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)