A maneira adequada de verificar se a chave de array existe é a função array_key_exists()
A diferença é que quando você tem $_POST['variable'] = null
isso significa que a chave existe e foi enviada, mas o valor era nulo
A outra opção é a isset()
que irá verificar se a chave do array existe e se foi definida
A última opção é usar o empty()
que irá verificar se a chave do array existe se está definida e se o valor não é considerado vazio.
Exemplos:
$arr = [
'a' => null,
'b' => '',
'c' => 1
];
array_key_exists('a', $arr); // true
isset($arr['a']); // false
empty($arr['a']); // true
array_key_exists('b', $arr); // true
isset($arr['b']); // true
empty($arr['b']); // true
array_key_exists('c', $arr); // true
isset($arr['c']); // true
empty($arr['c']); // false
Quanto à sua pergunta
A maneira correta de verificar se o valor foi enviado é usar array_key_exists () com verificação do método de solicitação
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Mas há alguns casos que dependem de sua lógica isset()
e empty()
podem ser bons também.
empty()
é correto para a escolha # 1, porque em php, a string é equivalente a - e retorna para todos os valores equivalentes a false . Portanto , usando , o código pularia a impressão se o valor fosse . Se você quiser excluir a string vazia, veja a resposta de Augustus.'0'
false
empty()
true
empty
'0'