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

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.
lofman
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 122
Member Since:
August 27, 2007
sp_UserOfflineSmall Offline
1
February 7, 2008 - 11:52 am
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
February 7, 2008 - 12:02 pm
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:
August 27, 2007
sp_UserOfflineSmall Offline
1179645
February 7, 2008 - 12:13 pm
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
Member
Medlem
Forum Posts: 6002
Member Since:
January 4, 2001
sp_UserOfflineSmall Offline
1179657
February 7, 2008 - 1:34 pm
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:
August 27, 2007
sp_UserOfflineSmall Offline
1179660
February 7, 2008 - 1:55 pm
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:
August 27, 2007
sp_UserOfflineSmall Offline
1179662
February 7, 2008 - 2:04 pm
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:
June 28, 2007
sp_UserOfflineSmall Offline
1179699
February 7, 2008 - 5:07 pm
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:
August 27, 2007
sp_UserOfflineSmall Offline
1179708
February 7, 2008 - 5:48 pm
sp_Permalink sp_Print

Vad är ett referens anrop? 🙂

NH|CryptoN
Kommer du hit ofta?
Medlem
Forum Posts: 266
Member Since:
June 28, 2007
sp_UserOfflineSmall Offline
1179766
February 7, 2008 - 11:27 pm
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:
August 27, 2007
sp_UserOfflineSmall Offline
1179842
February 8, 2008 - 2:54 pm
sp_Permalink sp_Print

Ok, exempel uppskattas 🙂

NH|CryptoN
Kommer du hit ofta?
Medlem
Forum Posts: 266
Member Since:
June 28, 2007
sp_UserOfflineSmall Offline
1179956
February 9, 2008 - 10:57 pm
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]

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 438
Currently Browsing this Page:
2 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:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
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