Właściwym sposobem sprawdzenia, czy klucz tablicy istnieje, jest funkcja array_key_exists()
Różnica polega na tym, że jeśli masz $_POST['variable'] = null, oznacza to, że klucz istnieje i został wysłany, ale wartość była zerowa
Inną opcją jest to, isset()która sprawdzi, czy klucz tablicy istnieje i czy został ustawiony
Ostatnią opcją jest użycie, empty()które sprawdzi, czy klucz tablicy istnieje, jeśli jest ustawiony i czy wartość nie jest uważana za pustą.
Przykłady:
$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
Odnośnie twojego pytania
Właściwym sposobem sprawdzenia, czy wartość została wysłana, jest użycie funkcji array_key_exists () z metodą sprawdzania żądania
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Ale są pewne przypadki, w zależności od twojej logiki, gdzie isset()i empty()może być również dobre.
empty()jest poprawny dla wyboru nr 1, ponieważ w php ciąg jest równoważny - i zwraca dla wszystkich wartości równoważnych fałszowi . Więc używając , kod pominie drukowanie, jeśli wartość to . Jeśli chcesz wykluczyć pusty ciąg, zobacz odpowiedź Augusta.'0'falseempty()trueempty'0'