[ Miloš Bjelanović @ 22.12.2011. 16:42 ] @
What value is printed for "a" below
Code:

<?php

    $a = 1;

    function Test()
    {
        echo "a = $a";
    }
    Test();
?>


Odgovori:
1, 2, 3, no value.

Moj odgovor je 1, ali nije tačno, već je "no value". Zašto?
[ plus_minus @ 22.12.2011. 17:22 ] @
Ako tebi lično nije jasno, a ne testiraš nikoga ovde, onda treba samo da staviš global $a; pre echo "a=$a"; ili da definišeš $a unutar same f'je.

Code (php):


  $a = 1;

    function Test()
    {
        global $a;
        echo "a = $a";
    }

    Test();

 


Code (php):


    function Test()
    {
        $a = 1;
        echo "a = $a";
    }

    Test();

 



Code (php):


  $a = 1;

    function Test($a)
    {
        echo "a = $a";
    }

    Test($a);

 
[ VladaSu @ 22.12.2011. 17:24 ] @
Code (php):

<?php

    $a = 1;

    function Test()
    {
        echo "a = $a";
    }
    Test();
?>
 

Zato sto varijable definisane izvan funkcije nisu vidljive u funkciji.

Ovo je moguce:
Code (php):

<?php

    function Test()
    {
        $a = 1;
        echo "a = $a";
    }
    Test();
?>
 


To mozes ovako resiti:
1. Prenos varijabli
Code (php):

<?php

    $a = 1;

    function Test($b) // moze i $a koji nije isti sa onim $a = 1 ali sam stavio $b da te ne buni
    {
        echo "a = $b";
    }
    Test($a);
?>
 


2. Koriscenjem global naredbe (nije preporucljivo)
Code (php):

<?php

    $a = 1;

    function Test()
    {
        global $a;
        echo "a = $a";
    }
    Test();
?>
 

[ Miloš Bjelanović @ 23.12.2011. 14:39 ] @
Sad mi je jasno - promjenljiva mora biti definisana unutar funkcije, ili povezana sa promjenljivom van funkcije preko riječi "global".

Hvala obojici.
[ VladaSu @ 23.12.2011. 17:32 ] @
Gledaj da ne koristis global. To ti je najore moguce resenje.
[ plus_minus @ 23.12.2011. 19:04 ] @
@Miloš Bjelanović

Nema na čemu.

Što se tiče 'global' rešenja, ako je promenjiva prost integrer (kao u ovom primeru) i primenjue se u sasvim prostim funkcijama za statični sadržaj, gde nema formi, itd. onda možeš i global varijantu.
[ Milos911 @ 23.12.2011. 23:33 ] @
Citat:
Miloš Bjelanović: Sad mi je jasno - promjenljiva mora biti definisana unutar funkcije, ili povezana sa promjenljivom van funkcije preko riječi "global".
Hvala obojici.

Preskocio si i ovo resenje:
Code:
$a = 1;

     function Test($a)
     {
         echo "a = $a";
     }

     Test($a);

Takodje mozes da pises samo
Code:


     function Test($a)
     {
         echo "a = $a";
     }

     Test(1);

I ako hoces da samo vratis vrednost iz funkcije, mozes da koristis return $a;
[ VladaSu @ 24.12.2011. 00:58 ] @
A moze i:
Code (php):


     function Test($a = 5)
     {
         echo "a = $a";
     }

     $b = 3;
     Test();
     Test(2);
     Test($b);