PHP函数没有看到第二个参数的值

时间:2016-07-07 13:49:19

标签: php

由于某些奇怪的原因,我的PHP没有看到第二个参数的值。

我的代码:

PHP函数:

public function getVacs($key, $id = null, $deleted = null, $deleted_key = null) {

        if(!$id) {
            $data = $this->_db->getAll('vacatures', $key);
        } elseif(!empty($deleted)) {
            $data = $this->_db->getAll('vacatures', $key, $id, $deleted, $deleted_key);
        } else {
            $data = $this->_db->getAll('vacatures', $key, $id);
        }

        if($data->count()) {
            $this->_data = $data->results();
            $this->_count = $data->count();
            return true;
        }
    }

调用该函数:

} elseif(isset($_POST['all'])) {

        $vacs = $v->getVacs('delete', '0');

        echo json_encode($v->data());
        exit();
    }

问题是,该函数没有看到$id的值。

它正在运行第一个if,而它应该运行else

3 个答案:

答案 0 :(得分:2)

在php中,字符串"0"的计算结果为false

这表示您的支票if(!$id)将评估为true,而您的逻辑id将不会在$data中设置。

如果字符串"0"是合法选项,请明确检查null

if(is_null($id)){ 

这将

答案 1 :(得分:1)

它看到$id的值,但你的if语句设置错误。 0会在这样的支票上评估为假。所以你真的需要确保它不是空的:

 if($id != null) {

如果你想要第一个if只在没有有效id的情况下运行,那么你需要检查它是否为空(即不是null,0,false或空字符串)

if(empty($id)) {

答案 2 :(得分:0)

在这些情况下使用strict comparison operator可能是一个好主意(在大多数情况下我会说):

0 == null; // evaluates to true
0 === null; // evaluates to false

strpos也有用(返回0表示在haystack字符串的第0位搜索的术语,返回false表示未找到搜索的术语)。