Les variables présentes au sein d'une fonction sont par définition locales, mais sous réserve d'une déclaration spéciale, leur portée peut être globale ou par ailleurs d'un type statique.

Toutes les variables déclarées dans une fonction sont utilisables localement. Elles ne peuvent être appelées et utilisées dans le corps du programme.

function SurfaceTriangle($largeur, $hauteur)
{
  $resultat = ($largeur * $hauteur) / 2;
  return $resultat;
}

echo SurfaceTriangle(20, 10) . " cm<sup>2</sup>;
// retourne 100 cm2

echo "($largeur * $hauteur) / 2 = " . $resultat;
// instruction erronée : variables indéfinies

Les variables globales peuvent être utilisées dans une fonction à condition de déclarer à nouveau les variables dans la fonction avec le mot-clé global ou en utilisant le tableau associatif prédéfini $GLOBALS.

$var_glo = valeur;
function Fonction()
{
  global $var_glo;
  $var_glo++;
}

function Autre_Fonction()
{
  $GLOBALS["var_glo"]++;
}

Par ailleurs, des variables peuvent être déclarées statiques dans une fonction afin de les utiliser récursivement dans la fonction elle-même.

function Fonction()
{
  static $variable = 0;
  if($variable <= 0)
  {
    Fonction();
  }
  $variable++
}

Dans cet exemple, si la variable n'est pas statique, sa valeur restera toujours nulle puisque son initialisation à zéro anulera son incrémentation.