Правильний спосіб перевірити наявність ключа масиву - це функція 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'. Якщо ви хочете виключити порожній рядок, дивіться відповідь Августа.