ThinkPHP5.1 查询表达式错误 解决一例

最近使用TP5.1做查询(数组查询方式)时出现了“查询表达式错误”的错误,查询条件数组是从前端输入的数据数组内层拿到的。
ThinkPHP5.1 查询表达式错误 解决一例_第1张图片

但是我的查询数组没毛病啊,于是在抛出异常的代码前打印了下指针位置key($value),发现居然是null!
层层定位后发现是在获取输入数据input()后,内层数组的指针位置便是null了。看来是input()的锅。
找到位置后,发现代码是这样的:

	    // 解析过滤器
        $filter = $this->getFilter($filter, $default);
        if (is_array($data)) {
            array_walk_recursive($data, [$this, 'filterValue'], $filter);
            reset($data);
        } else {
            $this->filterValue($data, $name, $filter);
        }

原来TP5.1在获取输入数据并执行过滤操作时使用的array_walk_recursive()方法进行的递归操作,执行完毕后没有递归地重置数组指针,只重置了最外层数组。
解决方法就是递归重置一下啦~

你可能感兴趣的:(PHP)