Правильный способ проверки наличия ключа массива - это функция array_key_exists()
Разница в том, что когда он у вас есть, $_POST['variable'] = nullэто означает, что ключ существует и был отправлен, но значение было нулевым.
Другой вариант, isset()который будет проверять, существует ли ключ массива и был ли он установлен.
Последний вариант - использовать, empty()который будет проверять, существует ли ключ массива, если он установлен, и если значение не считается пустым.
Примеры:
$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
Относительно вашего вопроса
Правильный способ проверить, было ли отправлено значение, - использовать array_key_exists () с проверкой метода запроса
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Но бывают случаи , зависит от вашей логики , где isset()и empty()может быть хорошо , как хорошо.
empty()это не правильно для выбора # 1, потому что в PHP, строка'0'эквивалентнаfalse- иempty()возвращаюtrueдля всех значений эквивалентна ЛЖИ . Таким образом, при использованииemptyкод пропускал бы печать, если бы значение было'0'. Если вы хотите исключить пустую строку, см. Ответ Августа.