Básico
As variáveis no PHP são representadas por um cifrão ($) seguido pelo
nome da variável. Os nomes de variável são sensíveis a maiúsculas e minúsculas.
Um nome válido de variável inicia com uma letra
(A-Z
, a-z
, ou os bytes de 128 a 255)
ou sublinhado, seguido
de qualquer número de letras, números ou sublinhados. Em uma
expressão regular, poderia ser representado assim:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Nota:
O PHP não suporta nomes de variáveis em Unicode, porém, algumas codificações
de caracteres (tal como UTF-8) codificam os caracteres de uma forma que todos os bytes
de um caractere multi-byte fiquem dentro da faixa permitida, fazendo com que
o nome da variável seja válido.
Nota:
$this
é uma variável especial que não pode ser
atribuída.
Antes do PHP 7.1.0, atribuição indireta (por exemplo, usando
variáveis variáveis)
era possível.
Exemplo #1 Nomes de variáveis válidos e inválidos
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // exibe "Bob, Joe"
$4site = 'not yet'; // inválido; começa com um número
$_4site = 'not yet'; // válido; começa com um sublinhado
$täyte = 'mansikka'; // válido; 'ä' é um caracter ASCII (extendido) 228
?>
O PHP aceita uma sequência de quaisquer bytes como um nome de variável. Nomes
de variáveis que não seguem as regras de nomenclatura mencionadas acima só podem ser
acessadas dinamicamente no momento da execução. Consulte a seção sobre
variáveis variáveis
para informação sobre como acessá-las.
Exemplo #2 Acessando nomes obscuros de variáveis
<?php
${'invalid-name'} = 'bar';
$name = 'invalid-name';
echo ${'invalid-name'}, " ", $$name;
?>
O exemplo acima produzirá:
Por padrão, as variáveis são sempre atribuídas por valor. Isto significa
que ao atribuir uma expressão a uma variável, o valor
da expressão original é copiado integralmente para a variável de
destino. Isto significa também que, após atribuir o valor de uma variável a
outra, a alteração de uma destas variáveis
não afetará a outra. Para maiores informações sobre este tipo de
atribuição, veja o capítulo em Expressões.
O PHP também oferece um outro meio de atribuir valores a variáveis:
atribuição por referência.
Isto significa que a nova variável simplesmente referencia (em outras palavras,
"torna-se um apelido para" ou "aponta para") a variável original.
Alterações na nova variável afetam a original, e vice-versa.
Para atribuir por referência, simplesmente adicione um e-comercial (&)
na frente do nome da variável que estiver sendo atribuída (variável
de origem). Por exemplo, o trecho de código abaixo exibe 'My
name is Bob
' duas vezes:
Uma observação importante a se fazer, é que somente variáveis
podem ser atribuídas por referência.
Não é necessário declarar variáveis no PHP, contudo é uma ótima
prática. Acessar uma variável indefinida resultará em um
E_WARNING
(antes do PHP 8.0.0, E_NOTICE
).
Uma variável indefinida tem um valor padrão de null
.
O construtor de linguagem isset()
pode ser usado para detectar se uma variável já foi inicializada.
Exemplo #3 Valor padrão de uma variável não inicializada
<?php
// Variável não definida E não referenciada (sem contexto de uso);
var_dump($unset_var);
?>
O exemplo acima produzirá:
Warning: Undefined variable $unset_var in ...
NULL
O PHP permite autovivificação de array (criação automática de novos arrays)
a partir de uma variável indefinida.
Anexar um elemento a uma variável indefinida criará um novo array e
não gerará um alerta.
Exemplo #4 Autovivificação de um array a partir de uma variável indefinida
<?php
$unset_array[] = 'value'; // Não gera um alerta.
?>
Aviso
Depender do valor padrão de uma variável não inicializada é problemático
ao incluir um arquivo em outro que usa o mesmo
nome de variável.
Uma variável pode ser destruída usando o construtor de linguagem
unset().
Para obter informações sobre funções relacionadas a variáveis, consulte a
Referência de funções variáveis.