2014-11-24 15 views
6

Cách hiệu quả nhất để kiểm tra xem các biến POST đã được đặt hay chưa?Kiểm tra xem các biến có được đặt là

Ví dụ, tôi đang thu thập 10 biến từ Trang 1, nếu chúng được thiết lập Tôi muốn để lưu trữ dữ liệu mà trên Trang 2. Nếu không, tôi muốn chỉ định 'không có sẵn'.

Tôi hiện đang sử dụng if !empty, tuy nhiên có vẻ như phải có một phương pháp dễ dàng/hiệu quả hơn, tôi khá mới với php nên mọi lời khuyên đều được đánh giá cao.

Mã ví dụ;

if (!empty($_POST["book"])) { 
    $book= $_POST['book'];  
}else{ 
    $book= 'not available'; 
} 

if (!empty($_POST["author"])) { 
    $author = $_POST['author'];  
}else{ 
    $author= 'not available'; 
} 

if (!empty($_POST["subtitle"])) { 
    $subtitle= $_POST['subtitle']; 
}else{ 
    $subtitle= 'not available'; 
} 

etc... 
etc... 
etc... 
+0

Bạn có biết chức năng isset không? Nhưng lưu ý rằng một biến có thể được đặt và rỗng cùng một lúc: $ a = "" trống và đặt – Serpes

+0

@Serpes yes, tuy nhiên nó có cùng một giá trị chính không? –

+1

Chúng cung cấp cho bạn các kết quả khác nhau như tôi đã nói trước đây – Serpes

Trả lời

9

Sử dụng vòng lặp và biến biến.

$fields = array('author', 'book', 'subtitle', ....); 
foreach($fields as $field) { 
    if (isset($_POST[$field])) { 
     $$field = $_POST[$field]; // variable variable - ugly, but gets the job done 
    } else { 
     $$field = 'not available'; 
    } 
} 
+0

lặp lại tốt, nhưng 'isset! ==! Empty' –

+0

Vì bạn có mảng' $ fields', bạn đang hạn chế vòng lặp của bạn thành các mục dự kiến, do đó tránh các vấn đề tiềm ẩn từ các yêu cầu xấu. +1 – TecBrat

+1

có, nhưng OP cho biết "SET", không phải "không trống". empty() là một hàm moronic anyways. trống (0) là đúng - điều này làm cho bất kỳ mã nào xử lý khoảng không quảng cáo/tiền/số dễ bị tổn hại đến các từ khóa phủ định sai. nên được gọi là "is_castable_to_false()" thay thế. –

0

Thông thường tôi sử dụng chức năng helper này:

function defa($array, $key, $default){ 
    if(isset($array[$key])){ 
     return $array[$key]; 
    }else{ 
     return $default; 
    } 
} 

Cách sử dụng:

$book = defa($_POST, 'book', 'Not available'); 

Hoặc, bạn có thể đơn giản hóa nếu bạn chỉ sử dụng mảng $ _POST:

function post_defa($key, $default){ 
    if(isset($_POST[$key])){ 
     return $_POST[$key]; 
    }else{ 
     return $default; 
    } 
} 

Cách sử dụng:

$book = post_defa('book', 'Not available'); 
Các vấn đề liên quan