funeralcrasher: (Default)
funeralcrasher ([personal profile] funeralcrasher) wrote2008-06-23 10:33 am

Stumped.

$num = 10;
function multiply()
{
$num = $num * 10;
}
multiply();
echo $num;


This prints "10" to the screen.

$num = $num * 10;
echo $num;


But this prints "0".

Why is that?

[identity profile] pkbarbiedoll.livejournal.com 2008-06-23 07:21 pm (UTC)(link)
I realize that $num = 10; won't be carried to the function without a global definition inside the function.

What I don't understand is why $num = $num * 10; equals 10, when $num is undefined (ie, 0 right?)

[identity profile] open-other-end.livejournal.com 2008-06-24 07:11 am (UTC)(link)
$num = $num * 10 doesnt mean $num = 10. What's happening is you've set $num to 10, defined a function, ran a function that didn't actually affect $num, and then you've printed out $num again. Nothing's actually changed.

Is this Javascript? I don't know it too well, but I don't know how function declarations work. You need to say that $num is a parameter inside the function, and then return it back again. If you say instead something like

$num = 10
function multiply(var num)
{
$num = $num * 10;
return $num;
}
$num = multiply($num)
and then print out num, you should get 100.

[identity profile] pkbarbiedoll.livejournal.com 2008-06-24 10:59 am (UTC)(link)
Duh! I just saw that.. Because there isn't a global declaration in the function, the variable doesn't exist to the "outside world". I feel teh stoopid this am. lol.
thanks for the drawn out expl.