由于某些奇怪的原因,我的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
。
答案 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表示未找到搜索的术语)。