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

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 10:39   27   0

最近使用TP5.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()方法进行的递归操作,执行完毕后没有递归地重置数组指针,只重置了最外层数组。
解决方法就是递归重置一下啦~

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP