La forma correcta de verificar si existe una clave de matriz es la función array_key_exists()
La diferencia es que cuando lo tienes $_POST['variable'] = nullsignifica que la clave existe y se envió pero el valor era nulo
La otra opción es isset()cuál verificará si existe una clave de matriz y si se configuró
La última opción es usar empty()que verificará si existe una clave de matriz si está configurada y si el valor no se considera vacío.
Ejemplos:
$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
Con respecto a su pregunta
La forma correcta de verificar si se envió el valor es usar array_key_exists () con verificación del método de solicitud
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Pero hay algunos casos que dependen de su lógica donde isset()y también empty()pueden ser buenos.
empty()es no correcto para la opción # 1, ya que en php, la cadena'0'es equivalente afalse- yempty()regresatruepara todos los valores equivalentes a falso . Entoncesempty, al usar , el código omitiría la impresión si el valor fuera'0'. Si desea excluir la cadena vacía, consulte la respuesta de Augustus.