老司机竟然在判断返回结果上翻车了(ThinkPHP)
“本文属于基础内容,看到的同学检查一下自己的代码有没有出现同样的问题
”
前言
小Q又带着问题来了,今天的问题估计是大多数同志都会犯的问题。
问题是在使用ThinkPHP时查询返回的结果判断是否为空。
是不是很自信,这有什么不知道的,不就是empty嘛!如果你是这样认为的,那还是把文章简单的看完哈!
“这个问题的缘由就是对框架查询数据库返回的结果是什么类型不明确,知道了类型就是一个非常简单的问题。
”
一、问题重现
数据库很简单就一张表user,这个表中没有任何数据,就是一个空表。
然后使用ThinkPHP框架进行查询这个表的数据
小Q给你三秒钟思考,这里会返回什么值。要么返回暂无数据,要么返回用户表的数据。
小Q毫不思索的说肯定会返回暂无数据,因为user表根本就没有数据。
那么来看一下打印的结果是什么。
小Q睁大了眼睛看也没有看到暂无数据四个字,而是返回了一空数组(暂且这么认为)。
“这里是暂时认为这就是一个空数组,其实只是长得像数组罢了,真的数据结构是结果集。至于什么是结果集,就自行百度哈!
”
这个时候小Q懵了啊!怎么会这样呢!在小Q强烈的要求下打印了date的数据
返回结果仍然还是一个空数组(暂且这样认为)
那么判断一个数组是否为空肯定得是empty()来进行判断的,对吧!
小Q自信十足的点了点头,这次肯定没有问题,这种写法我都写了好几年了,就是用empty来进行判断的。
为了让小Q看见骨灰盒在落泪,咔咔只能在对这个值进行一次是否为空的判断。
代码如下
小Q脸上洋溢着无比灿烂的笑容,我都不忍心去点击请求按钮。
无奈与小Q的期望,残忍的按下了请求按钮。
看到了上边的返回结果,小Q脸上的笑容顿时戛然而止,随之迎来的就是满脸质疑的大脸盘子。
再一次的检查了写的判断代码是否有问题。
老夫纵横沙场几十年,复制粘贴,拿起键盘就是干的实力怎么可能会把这个代码写错。
小Q终于坐不住了,笑嘻嘻的问,这是怎么回事啊!
终于要来到重点了,请继续看怎么让小Q明白这其中的道理的。
二、解决问题
此刻急需来检测一下返回的这data到底是不是我们坚持认为的数组,接下来检测一下。
于是拿起键盘敲了八下,那就是is_array这个函数。
再一次的发起请求
此时小Q的表情就是这样的,这下是真的凌乱了
于是我不慌不忙的打开官网的文档,给小Q看了一眼
官网明确的说明数据返回的结果就是数据集,而且在5.1的版本是直接默认的。
再继续往下看,你会看到额外的方法都有什么,第一个认识不,是否为空。
小Q惊呆的说了一句,卧槽,不会是用这种方式进行判断的吧!
是不是检测一下就可以了。
小Q终于一把鼻涕一把泪的说,我以为我眼睛出问题了呢!
明明是空数据怎么就判断不出来呢!长长的出了一口气。
“小Q一脸迷茫的看了我一眼,说了一句,自从使用了5.1框架后,所有的判断都是这样写的。 小Q紧忙的着小跑了出去,只说了一句话,赶紧在线上没有出现问题前把代码修复好,要不我就下岗了。
”
解决了小Q 的问题, 接下来聊点其它的。
三、扩展
解决了小Q的问题就来聊点正经话题。
在上文中存在一个遗漏问题,那就是empty,在PHP中判断数组是否为空就是使用的empty。
这一点小Q是坚定不移的认为是这个样子的,那么这种用法在框架中还能用吗?
那肯定是没有问题的啊!看下图
返回结果肯定跟预想的是一样的,真理永远都是真理。
四、总结
送给小Q的总结,精华总是那么的简单。
虽然返回结果可以在数据库的配置文件进行修改,但是咔咔是不建议修改的。
既然框架已经默认为结果集,那就使用结果结果集,如果非要使用数组那也是可以的。
经过小Q的这个问题,需要注意以下几点问题。
使用find查询时,如果结果为空返回结果是null,那么判断可以使用 !
来进行判断使用select查询时,如果结果为空,返回结果是一个空的结果集,可以使用结果集额外的函数toArray()进行转换为数组,然后使用empty进行判断。然而如果就使用结果集进行判断的话就是$data->isEmpty()提供的函数进行判断即可。
“坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。
”
以上是老司机竟然在判断返回结果上翻车了(ThinkPHP)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

运行 ThinkPHP 项目需要:安装 Composer;使用 Composer 创建项目;进入项目目录,执行 php bin/console serve;访问 http://localhost:8000 查看欢迎页面。

ThinkPHP 拥有多个版本,针对不同 PHP 版本而设计。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用于修复 bug 和提供新功能。当前最新稳定版本为 ThinkPHP 6.0.16。在选择版本时,需考虑 PHP 版本、功能需求和社区支持。建议使用最新稳定版本以获得最佳性能和支持。

ThinkPHP Framework 的本地运行步骤:下载并解压 ThinkPHP Framework 到本地目录。创建虚拟主机(可选),指向 ThinkPHP 根目录。配置数据库连接参数。启动 Web 服务器。初始化 ThinkPHP 应用程序。访问 ThinkPHP 应用程序 URL 运行。

Laravel 和 ThinkPHP 框架的性能比较:ThinkPHP 性能通常优于 Laravel,专注于优化和缓存。Laravel 性能良好,但对于复杂应用程序,ThinkPHP 可能更适合。

《开发建议:如何利用ThinkPHP框架实现异步任务》随着互联网技术的迅猛发展,Web应用程序对于处理大量并发请求和复杂业务逻辑的需求也越来越高。为了提高系统的性能和用户体验,开发人员常常会考虑利用异步任务来执行一些耗时操作,比如发送邮件、处理文件上传、生成报表等。在PHP领域,ThinkPHP框架作为一款流行的开发框架,提供了一些便捷的方式来实现异步任务。

ThinkPHP 安装步骤:准备 PHP、Composer、MySQL 环境。使用 Composer 创建项目。安装 ThinkPHP 框架及依赖项。配置数据库连接。生成应用代码。启动应用并访问 http://localhost:8000。

ThinkPHP 是一款高性能的 PHP 框架,具备缓存机制、代码优化、并行处理和数据库优化等优势。官方性能测试显示,它每秒可处理超过 10,000 个请求,实际应用中被广泛用于京东商城、携程网等大型网站和企业系统。

开发建议:如何利用ThinkPHP框架进行API开发随着互联网的不断发展,API(ApplicationProgrammingInterface)的重要性也日益凸显。API是不同应用程序之间进行通信的桥梁,它可以实现数据共享、功能调用等操作,为开发者提供了相对简单和快速的开发方式。而ThinkPHP框架作为一款优秀的PHP开发框架,具有高效、可扩展和易用
