PHP: ändra en variabel inne i en funktion. | Programmering / Grafisk formgivning | Forum

A A A

Please consider registering
Guest

Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
PHP: ändra en variabel inne i en funktion.
This topic is locked
lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1
februari 7, 2008 - 11:52 f m
sp_Permalink sp_Print

Hej, jag håller på med mitt eget php script, i början av scriptet skapar jag en variabel
”$entnum = -1;”

senare i scriptet innuti en function så försöker jag ändra dess värde
”$entnum++;”

felet är att så fort denna funktionen är färdig så återställs orginal värdet vilket var -1
Jag är ganska säker på att detta skall funka.

$maxshow = 5;
$entnum = -1;
$kind = 0;
$parser=xml_parser_create();

function start($parser,$element_name,$element_attrs){
switch($element_name){
case "NEW":
$entnum++;
break;
case "SUBJECT":
$kind = 1;
break;
case "DAY":
$kind = 2;
break;
case "MONTH":
$kind = 3;
break;
case "CONTENT":
$kind = 5;
break;
case "YEAR":
$kind = 4;
}
echo "LOADED: " . $element_name . $entnum . "
";
}
Zunk
Kommer du hit ofta?
Medlem
Forum Posts: 995
Member Since:
november 27, 2002
sp_UserOfflineSmall Offline
1179640
februari 7, 2008 - 12:02 e m
sp_Permalink sp_Print

Detta känns som ett typiskt zunk problem.. Variabler som oförklariligt vägrar ändra på sig 😉 Försök att echoa ut variabelns värde precis efter ”entnum++”. Har den ändrat på sig då?

Jag är absolut inget programmerings proffs. Därav den dumma ^^ felsökningen. Men det brukar vara bra att indentifiera vart problemet ligger liksom.

lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1179645
februari 7, 2008 - 12:13 e m
sp_Permalink sp_Print

Jupp variabeln är 0 så länge jag echoar innuti funktionen men efteråt så är den lika med -1 igen

Coore
Medlem
Medlem
Forum Posts: 6002
Member Since:
januari 4, 2001
sp_UserOfflineSmall Offline
1179657
februari 7, 2008 - 1:34 e m
sp_Permalink sp_Print

Nu har jag aldrig programmerat php, men vad händer om du skriver:
static $entnum = -1;
istället?

lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1179660
februari 7, 2008 - 1:55 e m
sp_Permalink sp_Print

inget resultat, jag tror att i funktionen så skapar den variabeln igen, eftersom när det inte är ”NEW” så existerar inte variabeln :S


Skapar variabel-> kör funktion -> =NEW -> skapar variabel igen med värde av 0 och lägger till 1 -> skriver ut variabeln som 1

lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1179662
februari 7, 2008 - 2:04 e m
sp_Permalink sp_Print

Problemet är löst 🙂 jag måste helt enkelt ladda in globala variabler i funktionen

$maxshow = 5;
$entnum = -1;
$kind = 0;
$parser=xml_parser_create();

function start($parser,$element_name,$element_attrs){
global $entnum, $kind;
switch($element_name){
case "NEW":
$entnum++;
break;
case "SUBJECT":
$kind = 1;
break;
case "DAY":
$kind = 2;
break;
case "MONTH":
$kind = 3;
break;
case "CONTENT":
$kind = 5;
break;
case "YEAR":
$kind = 4;
}
echo "LOADED: " . $element_name . $entnum . "
";
}
NH|CryptoN
Kommer du hit ofta?
Medlem
Forum Posts: 266
Member Since:
juni 28, 2007
sp_UserOfflineSmall Offline
1179699
februari 7, 2008 - 5:07 e m
sp_Permalink sp_Print

En rekommendation är att hålla dig borta ifrån globala variabler och istället använda referensanrop, när du inte vill skapa kopior av variabler i minnet.

Glad Fisk

/Bryan

lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1179708
februari 7, 2008 - 5:48 e m
sp_Permalink sp_Print

Vad är ett referens anrop? 🙂

NH|CryptoN
Kommer du hit ofta?
Medlem
Forum Posts: 266
Member Since:
juni 28, 2007
sp_UserOfflineSmall Offline
1179766
februari 7, 2008 - 11:27 e m
sp_Permalink sp_Print

Referensanrop är när man skickar in en referens till en variabel.
När man använder referensanrop får man tillbaka resultatet via den parameter man skickar in, dessa parametrar kallas därför för utparameter.

lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
augusti 27, 2007
sp_UserOfflineSmall Offline
1179842
februari 8, 2008 - 2:54 e m
sp_Permalink sp_Print

Ok, exempel uppskattas 🙂

NH|CryptoN
Kommer du hit ofta?
Medlem
Forum Posts: 266
Member Since:
juni 28, 2007
sp_UserOfflineSmall Offline
1179956
februari 9, 2008 - 10:57 e m
sp_Permalink sp_Print

$a = 10;
berakna_tal($tal);
echo $a;

function berakna_tal(&$a) {
$a = $a + 10;
echo "$a
";
}

Funktionsdeklarationen har ett ’&’ tecken.[/code]

This topic is locked
Forum Timezone: Europe/Stockholm

Most Users Ever Online: 694

Currently Online:
214 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Andreas Galistel: 16287

Jonas Klar: 15897

ilg@dd: 10810

Nyhet: 10607

Mind: 10550

Ctrl: 10355

Gueno: 9881

Guest: 9344

Snorch: 8881

Callister: 8468

Newest Members:

TimothyrexZF TimothyrexZF

BhoblhgatKX BhoblhgatKX

BoxerKix BoxerKix

dtaleteuxh dtaleteuxh

MiltonMouttEV MiltonMouttEV

travCoundUE travCoundUE

TakumiwipHQ TakumiwipHQ

Doctorhoda Doctorhoda

CDailyseartAD CDailyseartAD

SteveWicZL SteveWicZL

Forum Stats:

Groups: 11

Forums: 59

Topics: 146630

Posts: 1300967

 

Member Stats:

Guest Posters: 2

Members: 78407

Moderators: 0

Admins: 11

Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL