Dizi anahtarının var olup olmadığını kontrol etmenin doğru yolu işlevdir array_key_exists()
Aradaki fark, sahip $_POST['variable'] = nullolduğunuzda anahtarın var olduğu ve gönderildiği, ancak değerin boş olduğu anlamına gelir.
Diğer seçenek, isset()dizi anahtarının var olup olmadığını ve ayarlanıp ayarlanmadığını kontrol edecek olan seçenektir.
Son seçenek, empty()dizi anahtarının var olup olmadığını ve değerin boş kabul edilmediğini kontrol edecek olanı kullanmaktır .
Örnekler:
$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
Sorunuzla ilgili olarak
Değerin gönderilip gönderilmediğini kontrol etmenin uygun yolu, istek yönteminin kontrolü ile array_key_exists () kullanmaktır.
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Ancak bazı durumlarda sizin mantık bağlıdır nerede vardır isset()ve empty()iyi olmak yanı olabilir.
empty()olduğu değil php, dize, çünkü seçim # 1 için doğru'0'eşdeğerdirfalseve -empty()dönertrueiçin YANLıŞ olarak tüm değerlerin eşdeğer . Bu nedenleempty, değer kullanıldığında kod yazdırmayı atlar'0'. Boş dizgeyi dışarıda bırakmak istiyorsanız, Augustus cevabına bakın.