Website Development Prices

Search Blog

Tuesday, May 10, 2016

Upotreba staticke promenljive (Using static variables)

Lokalne promenljive u funkcijama se resetuju na svoje podrazumevane vrednosti uvek kada se funkcija pozove. 

Primer: ako imate funkcjiu za brojanje, koja svakog puta kada je pozovete povecava vrednost promenljive $brojac za 1

<?php

echo "Trenutni broj: ", broj_zapisa(), "<br />"; 
echo "Trenutni broj: ", broj_zapisa(), "<br />";
echo "Trenutni broj: ", broj_zapisa(), "<br />";
echo "Trenutni broj: ", broj_zapisa(), "<br />";

function broj_zapisa()
{
$brojac = 0;
$brojac++;
return $brojac;

}

?>

Rezultat:


Trenutni broj: 1
Trenutni broj: 1
Trenutni broj: 1
Trenutni broj: 1


Objasnjenje: promenljiva $brojac, lokalna promenjiva, uvek kada se funkcije pozove dobija vrednost 0. Posle toga se ta vrednost povecava na 1, tako da je vrednost uvek 1.

Da bi ovo resili, deklarisite promenljivu $brojac kao staticku. To znaci da ce promenljiva $brojac zadrzati vrednost izmedju poziva funkcije. 

<?php

echo "Trenutni broj: ", broj_zapisa(), "<br />"; 
echo "Trenutni broj: ", broj_zapisa(), "<br />";
echo "Trenutni broj: ", broj_zapisa(), "<br />";
echo "Trenutni broj: ", broj_zapisa(), "<br />";

function broj_zapisa()
{
static $brojac = 0;
$brojac++;
return $brojac;

}

?>

Rezultat:

Trenutni broj: 1
Trenutni broj: 2
Trenutni broj: 3
Trenutni broj: 4


Local variables in functions are reset to their default values whenever the function is called.

Example: if you have funcrion for counting, that every time you call it increases the value of variable $counter for 1.

<?php

echo "Current number: ", count_number(), "<br />"; 
echo "Current number: ", count_number(), "<br />";
echo "Current number: ", count_number(), "<br />";
echo "Current number: ", count_number(), "<br />";

function count_number()
{
$counter = 0;
$counter++;
return $counter;

}

?>

Result:

Current number: 1
Current number: 1
Current number: 1
Current number: 1


Explanation: variable $counter, local variable, whenever a function is called, receives value 0. After that, this value increases to 1, so that the value is always 1

To solve this, declare variable $counter as static. This means that the variable $counter will retain value between function calls.

<?php

echo "Current number: ", count_number(), "<br />"; 
echo "Current number: ", count_number(), "<br />";
echo "Current number: ", count_number(), "<br />";
echo "Current number: ", count_number(), "<br />";

function count_number()
{
static $counter = 0;
$counter++;
return $counter;

}

?>

Result:

Current number: 1
Current number: 2
Current number: 3
Current number: 4


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.