Bird
Raised Fist0
PHPprogramming~10 mins

Variable scope in functions in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Variable scope in functions
Start Program
↓
Define Global Variable
↓
Call Function
↓
Inside Function
↓
Access Global?
↓
Use global var
↓
Function Ends
↓
Back to Global
↓
Program Ends
This flow shows how a program defines a global variable, calls a function, and how variables inside the function can be local or access the global variable.
Execution Sample
PHP
<?php
$number = 10;
function test() {
  $number = 5;
  echo $number;
}
test();
echo $number;
?>
This code shows a global variable and a local variable with the same name inside a function, printing both.
Execution Table
StepCode LineVariableValueActionOutput
1$number = 10;number10Global variable set
2function test() {...}--Function defined
3test();--Function called
4$number = 5;number (local)5Local variable inside function set
5echo $number;number (local)5Print local variable5
6Function ends--Return to global scope
7echo $number;number (global)10Print global variable10
💡 Function ends and program finishes after printing both local and global variables.
Variable Tracker
VariableStartAfter Function CallFinal
number (global)101010
number (local)undefined5undefined
Key Moments - 3 Insights
Why does echo inside the function print 5, but outside prints 10?
Inside the function, $number is a new local variable set to 5 (see execution_table step 4 and 5). Outside, $number is the global variable still holding 10 (step 7). They are different variables.
Does the local $number inside the function change the global $number?
No, the local $number is separate and does not affect the global $number (see variable_tracker). The global $number remains 10 after the function call.
What if we want to change the global $number inside the function?
You must declare 'global $number;' inside the function to access and modify the global variable (not shown here). Without it, $number inside is local.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what value does $number have inside the function at step 4?
Aundefined
B10
C5
D0
💡 Hint
Check the 'Value' column for step 4 in execution_table.
At which step does the program print the global $number?
AStep 5
BStep 7
CStep 6
DStep 3
💡 Hint
Look for 'echo $number;' outside the function in execution_table.
If we add 'global $number;' inside the function before setting it, what would happen to the global $number?
AIt changes to 5
BIt stays 10
CIt becomes undefined
DIt causes an error
💡 Hint
Recall key_moments explanation about modifying global variables inside functions.
Concept Snapshot
Variable scope in PHP functions:
- Variables inside functions are local by default.
- Global variables are separate unless declared with 'global'.
- Local variables do not affect global variables.
- Use 'global $var;' inside functions to access global variables.
- Echo inside function prints local; outside prints global if names clash.
Full Transcript
This example shows how PHP handles variable scope in functions. A global variable named $number is set to 10. Inside the function test(), a new local variable $number is set to 5. When the function prints $number, it shows 5 because it uses the local variable. After the function ends, printing $number outside shows 10, the global variable. The local variable inside the function does not change the global one. To modify the global variable inside a function, you must declare it with 'global $number;'. This helps avoid confusion between local and global variables.

Practice

(1/5)
1. What is the scope of a variable declared inside a PHP function without using global?
easy
A. It is accessible only outside the function.
B. It is global and accessible everywhere.
C. It is static and retains value between calls.
D. It is local to the function only.

Solution

  1. Step 1: Understand variable declaration inside functions

    Variables declared inside a function are local by default, meaning they exist only within that function.
  2. Step 2: Recall the role of the global keyword

    Without using global, the variable does not refer to any global variable with the same name.
  3. Final Answer:

    It is local to the function only. -> Option D
  4. Quick Check:

    Local scope = inside function only [OK]
Hint: Variables inside functions are local unless declared global [OK]
Common Mistakes:
  • Assuming variables inside functions are global by default
  • Confusing local variables with static variables
  • Thinking variables inside functions affect global variables automatically
2. Which of the following is the correct way to access a global variable $count inside a PHP function?
easy
A. Use var $count; inside the function.
B. Declare $count again inside the function.
C. Use global $count; inside the function.
D. Use static $count; inside the function.

Solution

  1. Step 1: Recall how to access global variables inside functions

    In PHP, to access a global variable inside a function, you must declare it with the global keyword inside that function.
  2. Step 2: Check other options for correctness

    Declaring the variable again inside the function creates a new local variable. static keeps value between calls but does not access global. var is not used inside functions.
  3. Final Answer:

    Use global $count; inside the function. -> Option C
  4. Quick Check:

    Access global with global keyword [OK]
Hint: Use 'global' keyword to access global variables inside functions [OK]
Common Mistakes:
  • Re-declaring global variables inside functions without 'global'
  • Using 'static' instead of 'global' to access globals
  • Using 'var' keyword inside functions
3. What will be the output of the following PHP code?
$x = 5;
function test() {
    $x = 10;
    echo $x;
}
test();
echo $x;
medium
A. 10 5
B. 5 10
C. 10 10
D. 5 5

Solution

  1. Step 1: Analyze variable scope inside the function

    Inside test(), $x is assigned 10 locally, so echo $x; prints 10.
  2. Step 2: Analyze variable outside the function

    Outside the function, $x remains 5 because the local $x inside the function does not affect the global $x.
  3. Final Answer:

    10 5 -> Option A
  4. Quick Check:

    Local $x = 10, global $x = 5 [OK]
Hint: Local variables inside functions do not change globals [OK]
Common Mistakes:
  • Assuming function changes global variable without 'global' keyword
  • Confusing output order
  • Thinking variables inside functions share the same memory as globals
4. Identify the error in the following PHP code and select the correct fix:
$count = 0;
function increment() {
    $count++;
}
increment();
echo $count;
medium
A. Declare $count as static inside the function.
B. Add global $count; inside the function.
C. Pass $count as a parameter to the function.
D. No error; code works fine.

Solution

  1. Step 1: Understand variable scope in the function

    The function tries to increment $count, but without global, it treats $count as undefined local variable.
  2. Step 2: Fix the scope issue

    Adding global $count; inside the function tells PHP to use the global $count variable, allowing increment to work.
  3. Final Answer:

    Add global $count; inside the function. -> Option B
  4. Quick Check:

    Use global keyword to modify global variables inside functions [OK]
Hint: Use 'global' to modify global variables inside functions [OK]
Common Mistakes:
  • Forgetting to declare global variables inside functions
  • Assuming variables are automatically global
  • Using static instead of global for global variables
5. Consider the following PHP code:
$value = 3;
function multiply() {
    global $value;
    $value *= 2;
}
multiply();
function reset() {
    $value = 0;
}
reset();
echo $value;
What will be the output and why?
hard
A. 6 because multiply changes global, reset changes local only.
B. 0 because reset changes global variable.
C. 3 because multiply and reset do not affect global variable.
D. Error because reset tries to access undefined global variable.

Solution

  1. Step 1: Analyze multiply() function

    It uses global $value; and doubles the global $value from 3 to 6.
  2. Step 2: Analyze reset() function

    It declares $value without global, so it creates a local variable $value set to 0, leaving global $value unchanged.
  3. Step 3: Final output

    After calling both functions, global $value remains 6, so echo $value; prints 6.
  4. Final Answer:

    6 because multiply changes global, reset changes local only. -> Option A
  5. Quick Check:

    global keyword affects global variable, local does not [OK]
Hint: Only functions with 'global' keyword affect global variables [OK]
Common Mistakes:
  • Assuming reset() changes global variable without 'global'
  • Thinking variables inside functions always affect globals
  • Confusing local and global variable effects
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard