0

我想将一个空的输入/字符串变成null,但似乎我无法让它工作。下面是处理 $_POST 的类,

class post 
{
    public $data = array();

    public function get($param, $default = null) {
        if (!isset($this->data[$param])) {//not set, return default
            return $default;
        }
        else if(isset($this->data[$param]) && $default === ''){//empty string
            return null;
        }
        return $this->data[$param];
    }

}

例如,

$post = new post();
$test = $post->get('url','');
var_dump($test);

我明白了,

string '' (length=0)

但我想要null。可能吗?

4

2 回答 2

6

您可能不需要添加参数:

$test = $post->get('url');

null毕竟它的默认值是。

或者你可以明确指定它:

$test = $post->get('url', null);
于 2013-09-14T18:37:18.743 回答
2

除了@konsolebox 的回答,您还可以NULL在方法内静默地将空字符串转换为 s get()

public function get($param, $default = null) {
    if ($default === '') {
        $default = null;
    }

    // ...

这样做的好处是,当您的默认值是动态的(作为变量传入)并且它恰好是一个空字符串时,它仍然会产生所需的效果:

$default = '';
$test = $post->get('url', $default); // null
于 2013-09-14T18:40:38.763 回答