一行中的多个if语句不能工作


Multiple if statements in a row do not work?

所以我把它写入我的脚本

if (!isset($params['q']) || !$params['q']) {
    $params['q'] = 'trending';
}

if (!isset($params['meal']) || !$params['meal']) {
    $params['meal'] = 0;
}
if (!isset($params['sort']) || !$params['sort']) {
    $params['sort'] = 0;
}
    $params = array_unique($params);

现在奇怪的是$params['q'] = 'trending'$params['meal'] = 0但令人怀疑的是,sort将被全部退出。如果我把sort放在meal前面,sort就会显示出来,而不是meal。如果我把sort放在另一个命令后面,那么所有三个命令都将列出。我是不是漏掉了什么?在php中,一行不能有两个以上的if语句。

    array (size=2)
    'q' => string 'trending' (length=8)
    'meal' => int 0

这是没有改变顺序的,现在如果我在if语句2和3之间放一个命令,我得到

    array (size=3)
    'q' => string 'trending' (length=8)
    'meal' => int 0
    'sort' => int 0

就是我想要的

你不是想看看这个键是否存在吗?如果是这样,您可能希望使用array_key_exists,如下所示:

if (!array_key_exists('q', $params)) {
    $params['q'] = 'trending';
}
if (!array_key_exists('meal', $params) {
    $params['meal'] = 0;
}
if (!array_key_exists('sort', $params) {
    $params['sort'] = 0;
}
$params = array_unique($params);