检查是否设置了变量

时间:2014-11-24 16:46:56

标签: php

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

例如,我从 Page 1 收集10个变量,如果已设置,我想将这些数据存储在 上。如果没有,我想指定' not available '。

我目前正在使用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...

2 个答案:

答案 0 :(得分:9)

使用循环和变量变量。

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

答案 1 :(得分:0)

通常我使用这个辅助函数:

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');