Cách thích hợp để kiểm tra xem khóa mảng có tồn tại hay không là hàm array_key_exists()
Sự khác biệt là khi bạn có $_POST['variable'] = null
nó có nghĩa là khóa tồn tại và đã được gửi nhưng giá trị là null
Tùy chọn khác là tùy chọn này isset()
sẽ kiểm tra xem khóa mảng có tồn tại hay không và nếu nó đã được đặt
Tùy chọn cuối cùng là sử dụng tùy chọn này empty()
sẽ kiểm tra xem khóa mảng có tồn tại hay không nếu được đặt và nếu giá trị không được coi là trống.
Ví dụ:
$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
Liên quan đến câu hỏi của bạn
Cách thích hợp để kiểm tra xem giá trị có được gửi hay không là sử dụng array_key_exists () với phương thức kiểm tra yêu cầu
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Nhưng có một số trường hợp phụ thuộc vào logic của bạn ở đâu isset()
và empty()
cũng có thể tốt.
empty()
là không chính xác cho sự lựa chọn số 1, bởi vì trong php, chuỗi'0'
tương đương vớifalse
- vàempty()
lợi nhuậntrue
cho tất cả các giá trị tương đương là false . Vì vậy, khi sử dụngempty
, mã sẽ bỏ qua việc in nếu giá trị là'0'
. Nếu bạn muốn loại trừ chuỗi trống, hãy xem câu trả lời của Augustus.