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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值