老司机竟然在判断返回结果上翻车了(ThinkPHP)

本文属于基础内容,看到的同学检查一下自己的代码有没有出现同样的问题

前言

小Q又带着问题来了,今天的问题估计是大多数同志都会犯的问题。

问题是在使用ThinkPHP时查询返回的结果判断是否为空。

是不是很自信,这有什么不知道的,不就是empty嘛!如果你是这样认为的,那还是把文章简单的看完哈!

这个问题的缘由就是对框架查询数据库返回的结果是什么类型不明确,知道了类型就是一个非常简单的问题。

一笑泯恩仇
一笑泯恩仇

一、问题重现

数据库很简单就一张表user,这个表中没有任何数据,就是一个空表。

数据库
数据库

然后使用ThinkPHP框架进行查询这个表的数据

查询代码
查询代码

小Q给你三秒钟思考,这里会返回什么值。要么返回暂无数据,要么返回用户表的数据。

小Q毫不思索的说肯定会返回暂无数据,因为user表根本就没有数据。

那么来看一下打印的结果是什么。

小Q睁大了眼睛看也没有看到暂无数据四个字,而是返回了一空数组(暂且这么认为)。

这里是暂时认为这就是一个空数组,其实只是长得像数组罢了,真的数据结构是结果集。至于什么是结果集,就自行百度哈!

返回结果
返回结果

这个时候小Q懵了啊!怎么会这样呢!在小Q强烈的要求下打印了date的数据

希望不是你
希望不是你

返回结果仍然还是一个空数组(暂且这样认为)

返回结果
返回结果

那么判断一个数组是否为空肯定得是empty()来进行判断的,对吧!

小Q自信十足的点了点头,这次肯定没有问题,这种写法我都写了好几年了,就是用empty来进行判断的。

自信的你
自信的你

为了让小Q看见骨灰盒在落泪,咔咔只能在对这个值进行一次是否为空的判断。

代码如下

代码打印
代码打印

小Q脸上洋溢着无比灿烂的笑容,我都不忍心去点击请求按钮。

无奈与小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的总结,精华总是那么的简单。

虽然返回结果可以在数据库的%ignore_a_1%进行修改,但是咔咔是不建议修改的。

既然框架已经默认为结果集,那就使用结果结果集,如果非要使用数组那也是可以的。

经过小Q的这个问题,需要注意以下几点问题。

使用find查询时,如果结果为空返回结果是null,那么判断可以使用来进行判断
使用select查询时,如果结果为空,返回结果是一个空的结果集,可以使用结果集额外的函数toArray()进行转换为数组,然后使用empty进行判断。然而如果就使用结果集进行判断的话就是$data->isEmpty()提供的函数进行判断即可。

坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。

以上就是老司机竟然在判断返回结果上翻车了(ThinkPHP)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/80010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月15日 12:32:30
下一篇 2025年11月15日 13:24:23

相关推荐

  • 网页设计css样式代码大全,快来收藏吧!

    减少很多不必要的代码,html+css可以很方便的进行网页的排版布局。小伙伴们收藏好哦~ 一.文本设置    1、font-size: 字号参数  2、font-style: 字体格式 3、font-weight: 字体粗细 4、颜色属性 立即学习“前端免费学习笔记(深入)”; color: 参数 …

    2025年12月24日
    000
  • css中id选择器和class选择器有何不同

    之前的文章《什么是CSS语法?详细介绍使用方法及规则》中带了解CSS语法使用方法及规则。下面本篇文章来带大家了解一下CSS中的id选择器与class选择器,介绍一下它们的区别,快来一起学习吧!! id选择器和class选择器介绍 CSS中对html元素的样式进行控制是通过CSS选择器来完成的,最常用…

    2025年12月24日
    000
  • php约瑟夫问题如何解决

    “约瑟夫环”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。…

    好文分享 2025年12月24日
    000
  • Redis配置文件redis.conf详细配置说明

    本文列出了redis的配置文件redis.conf的各配置项的详细说明,简单易懂,有需要的盆友可以参考哦。 redis.conf 配置项说明如下 redis配置文件详解 # vi redis.confdaemonize yes #是否以后台进程运行pidfile /var/run/redis/red…

    好文分享 2025年12月24日
    000
  • CSS新手整理的有关CSS使用技巧

    [导读]  1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 1px 的原因,这才知晓。宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源。  2、无边框。推荐的写法是     1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 …

    好文分享 2025年12月23日
    000
  • CSS中实现图片垂直居中方法详解

    [导读] 在曾经的 淘宝ued 招聘 中有这样一道题目:“使用纯css实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。”当然出题并不是随意,而是有其现实的原因,垂直居中是 淘宝 工作中最 在曾经的 淘宝UED 招聘 中有这样一道题目: “使用纯CSS实现未知尺寸…

    好文分享 2025年12月23日
    000
  • CSS派生选择器

    [导读] 派生选择器通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。在 css1 中,通过这种方式来应用规则的选择器被称为上下文选择器 (contextual selectors),这是由于它们依赖于上下文关系来应 派生选择器 通过依据元素在其位置的上下文关系来定义样式,你可以使标…

    好文分享 2025年12月23日
    000
  • CSS 基础语法

    [导读] css 语法 css 规则由两个主要的部分构成:选择器,以及一条或多条声明。selector {declaration1; declaration2;     declarationn }选择器通常是您需要改变样式的 html 元素。每条声明由一个属性和一个 CSS 语法 CSS 规则由两…

    2025年12月23日
    300
  • CSS 高级语法

    [导读] 选择器的分组你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。用逗号将需要分组的选择器分开。在下面的例子中,我们对所有的标题元素进行了分组。所有的标题元素都是绿色的。h1,h2,h3,h4,h5 选择器的分组 你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明…

    好文分享 2025年12月23日
    000
  • CSS id 选择器

    [导读] id 选择器id 选择器可以为标有特定 id 的 html 元素指定特定的样式。id 选择器以 ” ” 来定义。下面的两个 id 选择器,第一个可以定义元素的颜色为红色,第二个定义元素的颜色为绿色: red {color:re id 选择器 id 选择器可以为标有特…

    好文分享 2025年12月23日
    000
  • 有关css的绝对定位

    [导读] 定位(左边和顶部) css定位属性将是网虫们打开幸福之门的钥匙: h4 { position: absolute; left: 100px; top: 43px }这项css规则让浏览器将 的起始位置精 确地定在距离浏览器左边100象素,距离其 定位(左边和顶部) css定位属性将是网虫们…

    好文分享 2025年12月23日
    000
  • html5怎么加php_html5用Ajax与PHP后端交互实现数据传递【交互】

    HTML5不能直接运行PHP,需通过Ajax与PHP通信:前端用fetch发送请求,PHP接收处理并返回JSON,前端解析响应更新DOM;注意跨域、编码、CSRF防护和输入过滤。 HTML5 本身是前端标记语言,不能直接运行 PHP 代码,但可以通过 Ajax(异步 JavaScript)与 PHP…

    2025年12月23日
    300
  • 手机端怎么运行html文件_手机端运行html文件方法【教程】

    可通过手机浏览器、代码编辑器、本地服务器或在线工具四种方式预览HTML文件:一、用文件管理器打开HTML并选择浏览器即可渲染页面;二、使用Acode等编辑器导入文件后点击预览功能实时查看;三、对复杂项目可用KSWEB搭建本地服务器,将文件放入指定目录后通过http://127.0.0.1:8080访…

    2025年12月23日
    000
  • html5如何插入txt纯文本_html5txt文本嵌入与编码设置【实操】

    可通过iframe、fetch+pre、object标签或服务端预处理四种方式在HTML5中显示外部TXT文件,需重点处理字符编码(如UTF-8声明、BOM、响应头)并防范XSS风险。 如果您希望在HTML5页面中显示外部TXT纯文本文件的内容,浏览器默认不支持直接嵌入TXT文件为可渲染内容,必须通…

    2025年12月23日
    000
  • php如何html_在PHP代码中输出HTML内容【输出】

    必须确保PHP正确解析并输出原始HTML字符串而非转义文本;可通过echo/print直接输出、heredoc语法处理多行含变量HTML,或用PHP结束标签切换至纯HTML模式。 如果您在PHP脚本中需要将HTML代码作为响应内容发送给浏览器,则必须确保PHP正确解析并输出原始HTML字符串,而非将…

    2025年12月23日
    000
  • CSS样式如何转换为HTML内联_样式整合方案【攻略】

    CSS转内联样式有四种方案:一、手动提取并逐元素标注;二、用PostCSS插件自动注入,忽略伪类和媒体查询;三、Python脚本批量解析注入,需处理!important;四、在线工具临时转换,需人工修正失效引用。 如果您拥有外部或内部CSS样式表,但需要将这些样式转换为HTML元素的内联style属…

    2025年12月23日
    000
  • html5标题如何缩短_HTML5标题缩短方法与显示优化技巧【详解】

    HTML5标题优化有五种方法:一、CSS text-overflow截断;二、JavaScript动态裁剪;三、服务端预截断;四、CSS clamp响应式缩放;五、HTML语义化标记配合aria属性。 如果您在网页开发中发现HTML5标题过长,导致在移动端或窄屏设备上显示不全、换行错乱或影响页面美观…

    2025年12月23日
    000
  • 如何查找HTML文件路径_资源定位技巧【指南】

    使用浏览器开发者工具可快速定位HTML资源路径:打开Network面板刷新页面,查看Request URL及状态码;相对路径以HTML文件所在目录为基准;注意base标签对路径解析的影响。 如果您在开发网页时需要快速定位HTML文件或其引用的资源路径,可能由于项目结构复杂或路径配置错误导致资源无法加…

    2025年12月23日
    000
  • phpstorm怎么新建html5_PHPStorm新建HTML File选HTML5模板快速创建【新建】

    PHPStorm新建HTML文件未自动应用HTML5结构时,需检查并设置默认HTML模板为HTML5格式,或使用Live Template输入html5后按Tab键快速生成标准结构。 如果您在 PHPStorm 中新建 HTML 文件时未自动应用 HTML5 文档结构,则可能是模板配置未启用或文件类…

    2025年12月23日
    300
  • html5能否插入在线文档链接_html5在线文档嵌入与权限设置【教程】

    HTML5中嵌入在线文档需根据来源选择方案:一、用iframe嵌入Google Docs等公开文档,须设“任何人可查看”;二、通过OnlyOffice等第三方服务中转,确保响应头允许嵌入;三、用object/embed加载PDF,需服务器配置CORS;四、无法修改源站时,可用服务端代理过滤禁用响应头…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信