检查是否设置了变量


Check if Variables Are Set

检查是否已设置POST变量的最有效方法是什么?

例如,我正在从第 1 页收集 10 个变量,如果设置了它们,我想将该数据存储在第 2 页上。如果没有,我想分配"不可用"。

我目前正在使用if !empty,但是似乎必须有一种更简单/更有效的方法,我对php很陌生,所以任何建议都值得赞赏。

示例代码;

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...

使用循环和变量。

$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';
   }
}

通常我使用此辅助函数:

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

用法:

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

或者,如果仅使用 $_POST 数组,则可以简化:

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

用法:

$book = post_defa('book', 'Not available');