Já falamos sobre array em nosso artigo PHP – Aula 020: Arrays e em PHP – Aula 021: Arrays Multidimensionais.
Hoje, irei falar sobre as funções array_key_exists() e isset() que são usadas para validar a existência de uma chave dentro de um array.
Se o valor do elemento array não for null, tanto array_key_exists() quanto isset() retornarão true se a chave existir em um array e false se não existir.
Se o valor de uma chave for null, o isset() retornará false enquanto a função array_key_exists() retornará true.
array_key_exists()
A função PHP array_key_exists() verifica se existe uma chave em um array. A função array_key_exists() retorna true se a key existir do array. Caso contrário, retorna falso.
Observe que a função array_key_exists() procura a chave apenas na primeira dimensão do array. Se o array for multidimensional, a função array_key_exists() não encontrará a chave nos demais arrays internos, isto é, nos aninhados.
Vamos aos exemplos:
EXEMPLO 01
Abaixo verificamos se a chave 0 existe no array $nomes
<?php
$nomes = [
'Maria',
'Silva',
'maria@email'
];
$resultado = array_key_exists('0', $nomes);
echo "<pre>";
var_dump($resultado);
echo "</pre>";
?>
Resultado:
bool(true)
EXEMPLO 02
Abaixo verificamos se a chave 5 existe no array $nomes
<?php
$nomes = [
'Maria',
'Silva',
'maria@email'
];
$resultado = array_key_exists('5', $nomes);
echo "<pre>";
var_dump($resultado);
echo "</pre>";
?>
Resultado:
bool(false)
EXEMPLO COM ARRAY ASSOCIATIVO
Vamos exemplificar com um array associativo:
<?php
$nomes = [
'nome' => 'Maria',
'sobrenome' => 'Silva',
'email' => 'maria@email'
];
$resultado = array_key_exists('nome', $nomes);
echo "<pre>";
var_dump($resultado);
echo "</pre>";
?>
Resultado:
bool(true)
isset()
Não irei repetir todo o código novamente, pois o uso da função isset() é bem semelhante à array_key_exists()
Usando como exemplo um array associativo, podemos fazer:
<?php
...
$resultado = isset($nomes['nome']);
?>
Exemplo Usando Null com isset() e array_key_exists()
Conforme dito acima, se o valor de uma chave for null isset e array_key_exists retornam valores diferentes:
<?php
$nomes = [
'nome' => 'Maria',
'sobrenome' => 'Silva',
'email' => null
];
$resultado = isset($nomes['email']);
$resultado2 = array_key_exists('email',$nomes);
echo "<pre>";
var_dump($resultado);
var_dump($resultado2);
echo "</pre>";
?>
Vejamos o resultado:
bool(false)
bool(true)
acima definimos email para null e o resultado é que isset retorna false e array_key_exists true.
Conclusão
Vimos que, em PHP, a função array_key_exists() verifica se uma chave específica existe em um array, enquanto a função isset() verifica se uma variável está definida e não é nula. A função array_key_exists() só verifica as chaves de um array, enquanto a função isset() pode ser usada para verificar qualquer tipo de variável. Sim, a função isset() pode ser usada para qualquer tipo de variável, não somente array.
Podemos definir quando usar uma ou outra da seguinte forma: se você tem um array e quer verificar se uma chave específica existe nesse array, você deve usar array_key_exists(). Já se você quer verificar se uma variável existe e não é nula, você deve usar isset(). Mas em relação somente à arrays, posso falar a mesma coisa que cetei acima: Se o valor de uma chave for null, o isset() retornará false enquanto a função array_key_exists() retornará true.