未定义的偏移量#####

时间:2018-06-20 21:03:23

标签: php undefined offset

代码返回:

Notice: Undefined offset: 0  line 60
Notice: Undefined offset: 1  line 61
Notice: Undefined offset: 2  line 62

我不知道哪里出了错。我不知道,所以我需要一些帮助。

部分代码如下:

    private function action($action, $table, $where = array()) {
        if(count($where) === 3) {
            $operators = array('=','>','<','>=' ,'<=');


            $field      = $where[0]; //-----> LINE 60
            $operator   = $where[1]; //-----> LINE 61
            $value      = $where[2]; //-----> LINE 62

            if(in_array($operator, $operators)) {
            $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";

                if(!$this->query($sql, array($value))->error()) {
                    return $this;

                }

            }
        }
        return false;
    }

1 个答案:

答案 0 :(得分:0)

您的数组$where似乎不包含数字键。要获取数组的所有可用键,您可以使用array_keys使用以下代码:

var_dump(array_keys($where));

您的查询看起来没有可用的数字键。相反,数组的键是字段名称(例如id-但不是数字)。


您还可以像下面这样改善/缩短功能:

private function action($action, $table, $where = []) {
    if(count($where) === 3) {

        //you need to show the structure of $where to solve this.
        $field = $where[0];
        $operator = $where[1];
        $value = $where[2];

        if(in_array($operator, ['=','>','<','>=' ,'<='])) {
            $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";

            if(!$this->query($sql, [$value])->error()) {
                return $this;
            }
        }
    }

    return false;
}