function - php global variable not showing correct answer -


its simple code don't understand whats point :(

function aaa($b){ $a = 30; global $a,$c; return $c=($b+$a);} echo aaa(40); //output 40 

why output 40 ? when call $a outside of function gives me desired answer point ?

$a = 30; function aaa($b){ global $a,$c; return $c=($b+$a); } echo aaa(40); //output 70   function aaa($b){ global $a,$c; $a = 30; return $c=($b+$a); } echo aaa(40); //output 70 

see global keyword stands here:

function aaa($b) {     $a = 30;               # local variable, overwritten in next line     global $a, $c;         # importing $a global scope - null     return $c = ($b + $a); # $c = (40 + null) } 

the manual @ http://php.net/global reminds global variable influences function if used inside there. not first call subsequent calls.

this makes function non-deterministic, less useful code , might - did - irritated it.

an easy way out is: instead of putting parametric values of function global variables, turn them parameters:

function aaa($a, $b, &$c) {     return $c = ($b + $a); }  echo aaa(30, 40, $c); //output 70 

the code not easier read deterministic. behave same when called. means less guessing.

this example still has problem of returning value parameter (by reference), might see not necessary longer:

function aaa($a, $b) {     return ($b + $a); }  echo $c = aaa(30, 40); //output 70 

lessons take away:

  • do not use global variables inside functions - stand in way.
  • reduce number of parameters function has (that all incomming values, global counts well).

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -