Parameters let a function receive values from the call site.

parameter A parameter is a local name that receives an argument value when the function is called.

Function Parameters

level
function_parameters.php
Replay: real traced execution (multi-file project)
<?php
function badge(string $name, int $level): string {
    return $name . ":" . $level;
}

$level = 2;
$label = badge("Mia", $level);

echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
<?php
function badge(string $name, int $level): string {
    return $name . ":" . $level;
}

$level = 1;
$label = badge("Mia", $level);

echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
<?php
function badge(string $name, int $level): string {
    return $name . ":" . $level;
}

$level = 4;
$label = badge("Mia", $level);

echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
  1. $level ← 2

    6$level→ 2 = 2; //@level=1, 47$label = badge("Mia", $level2);
  2. function badge(string $name, int $level): string

    1<?php2function badge(string $nameMia, int $level2): string {3    return $nameMia . ":" . $level2;4}
  3. $label ← Mia:2

    6$level = 2; //@level=1, 47$label→ Mia:2 = badge("Mia", $level2);89echo "level=" . $level2 . "\n";10echo "label=" . $labelMia:2 . "\n";
    outputlevel=2
    label=Mia:2
  1. $level ← 1

    6$level→ 1 = 1;7$label = badge("Mia", $level1);
  2. function badge(string $name, int $level): string

    1<?php2function badge(string $nameMia, int $level1): string {3    return $nameMia . ":" . $level1;4}
  3. $label ← Mia:1

    6$level = 1;7$label→ Mia:1 = badge("Mia", $level1);89echo "level=" . $level1 . "\n";10echo "label=" . $labelMia:1 . "\n";
    outputlevel=1
    label=Mia:1
  1. $level ← 4

    6$level→ 4 = 4;7$label = badge("Mia", $level4);
  2. function badge(string $name, int $level): string

    1<?php2function badge(string $nameMia, int $level4): string {3    return $nameMia . ":" . $level4;4}
  3. $label ← Mia:4

    6$level = 4;7$label→ Mia:4 = badge("Mia", $level4);89echo "level=" . $level4 . "\n";10echo "label=" . $labelMia:4 . "\n";
    outputlevel=4
    label=Mia:4

Follow the Parameters

  1. level starts as 2.
  2. The call passes "Mia" as the name.
  3. It passes 2 as the level.
  4. badge joins the name, a colon, and the level.
  5. The script prints level=2 and label=Mia:2. | argument | parameter | value in label | | --- | --- | --- | | "Mia" | $name | Mia | | 2 | $level | 2 | | result | - | Mia:2 |

Exercise: function_parameters.php

Reproduce level=2 and label=Mia:2, then use the pinned level variants 1 and 4 to predict label=Mia:1 and label=Mia:4.