老司机竟然在判断返回结果上翻车了(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

相关推荐

  • Mac M1 芯片安装 Python 的注意事项

    在Mac M1芯片上安装Python需确保使用原生ARM64架构以获得最佳性能,避免通过Rosetta 2运行的x86_64版本以防依赖冲突和性能损失;2. 推荐使用pyenv + Homebrew或Miniforge进行安装,前者适合通用开发并可灵活管理多版本Python,后者专为数据科学优化且支…

    2025年12月15日
    000
  • 小数在python取整除运算符中输出

    取整除运算符//先进行除法再向负无穷取整,结果类型与操作数一致。例如7.0//2.0为3.0,-7.0//2.0为-4.0,等价于math.floor()而非int()。 在 Python 中,取整除运算符是 //,它也被称为“地板除”或“整除”。当对小数使用 // 时,Python 会先进行除法运…

    2025年12月15日
    000
  • python aiml库如何安装及使用?

    PyAIML是Python中用于实现AIML规范的第三方库,可构建简单聊天机器人。通过pip install pyaiml安装,需注意其可能不兼容Python 3.9+,可改用aiml-python3。使用时创建Kernel对象,加载std-startup.xml配置文件以引入basic-chat.…

    2025年12月15日
    000
  • python中hash算法是否可逆

    Hash算法是将任意数据映射为固定长度摘要的单向函数,Python中通过hash()和hashlib实现;因其信息丢失、单向性和抗碰撞性,无法逆向还原原始数据,故不可逆。 Python中的hash算法不可逆。 什么是hash算法 Hash算法(哈希算法)是一种将任意长度的数据映射为固定长度摘要的算法…

    2025年12月15日
    000
  • python运算符可以判定正负结果

    Python中可通过比较运算符判断数值正负:使用>、 Python 中的运算符确实可以用来判定数值的正负结果。通过比较运算符和逻辑运算符,能快速判断一个数是正数、负数还是零。 使用比较运算符判断正负 最基本的判断方式是使用 > 和 运算符: x > 0:当 x 是正数时返回 Tru…

    2025年12月15日
    000
  • Django框架中如何创建项目及应用?

    首先创建Django项目并启动服务器验证,再在项目中创建应用并注册。使用django-admin startproject mysite创建项目,运行python manage.py runserver可访问欢迎页;在项目目录下执行python manage.py startapp blog创建应用…

    2025年12月15日
    000
  • 设置python参数遵守优先级

    Python配置管理中,参数优先级从高到低为:命令行 > 环境变量 > 配置文件 > 默认值;通过argparse处理命令行参数,结合os和json读取环境变量与配置文件,按顺序逐步覆盖,最终实现灵活可维护的配置加载逻辑。 在 Python 中处理参数并遵守优先级,通常出现在配置管…

    2025年12月15日
    000
  • 怎么用python slice函数生成切片?

    slice函数用于创建切片对象以实现序列的切片操作,其语法为slice(start, stop, step),参数分别表示起始索引、结束索引和步长;该函数返回一个slice对象而非直接生成内容,可用于列表、字符串等序列类型;通过将切片逻辑抽象为变量,可实现切片规则的复用与动态控制,例如s = sli…

    2025年12月15日
    000
  • python中使用_setattr_()

    __setattr__用于控制属性赋值,每次设置属性时触发,可实现验证、只读等逻辑,需通过super().__setattr__或__dict__避免递归。 在 Python 中,__setattr__ 是一个特殊方法,用于控制对象属性的赋值行为。每当尝试设置对象的某个属性时,这个方法就会被调用。通…

    2025年12月15日
    000
  • python中字典与json相互转换的方法

    字典与JSON字符串可通过json模块相互转换:使用json.dumps()将字典转为JSON字符串,支持indent和ensure_ascii等参数美化输出;json.loads()将合法JSON字符串解析为字典;文件操作则用json.dump()写入、json.load()读取;注意键必须为字符…

    2025年12月15日
    000
  • 在macOS虚拟环境中安装mysqlclient的全面指南

    本文旨在解决在macos系统python虚拟环境中安装mysqlclient时常见的构建错误,特别是与pkg-config相关的依赖问题。我们将详细介绍如何利用homebrew安装必要的mysql客户端库和pkg-config工具,并通过配置环境变量确保mysqlclient能够成功编译和安装,从而…

    2025年12月15日
    000
  • 如何从ZIP压缩包加载字体到Matplotlib

    本教程详细介绍了如何将存储在zip文件中的字体高效地加载到matplotlib绘图库中。针对拥有大量字体库且不希望每次使用都手动解压的场景,本文提供了一种通过python `zipfile`模块自动化提取特定字体文件并利用matplotlib `font_manager`进行注册的方法,从而实现便捷…

    2025年12月15日
    000
  • 解决Nitrado服务器日志自动下载404错误:API端点与认证指南

    本文旨在解决使用%ignore_a_1%和nitrado api自动下载服务器日志时遇到的404错误。核心问题在于api端点使用不当和认证方式的潜在误区。我们将详细介绍nitrado文件服务器api的正确用法,包括如何列出和下载日志文件,并提供一个基于api令牌认证的优化python脚本,确保日志下…

    2025年12月15日
    000
  • 在SLURM中通过Python脚本调用srun的性能影响分析与实践

    本文探讨了在SLURM高性能计算环境中,通过Bash脚本提交一个Python脚本,该Python脚本进而使用`srun`启动大规模并行工作负载的性能考量。研究表明,Python脚本作为中间协调层在启动阶段引入的开销微乎其微,对后续大规模并行计算的运行时性能影响可忽略不计。 SLURM任务编排:Pyt…

    2025年12月15日
    000
  • Windows系统下彻底卸载Python的专业指南

    本教程详细指导如何在windows系统上彻底卸载python,涵盖通过控制面板移除程序、清理环境变量中的所有python路径、删除残余文件和文件夹,并特别强调排查非标准安装路径(如集成在其他工具中)的方法。旨在解决常规卸载后python仍残留的问题,确保系统纯净,避免潜在的版本冲突。 在Window…

    2025年12月15日
    000
  • 深入理解 Hatch 虚拟环境存储机制与自定义实践

    hatch 作为一个现代 python 项目管理工具,默认将虚拟环境存储在其管理的数据目录中,而非项目根目录。本文将解释 hatch 采用这种策略的原因,并提供详细教程,指导用户如何利用 `–data-dir` 选项自定义虚拟环境的存储位置,从而满足特定项目或工作流的需求,同时探讨这种默…

    2025年12月15日
    000
  • 在不使用Conda的情况下,通过Pip管理Python环境与安装软件包

    本教程旨在指导用户如何在不安装conda的情况下,利用python内置的`venv`模块创建独立的虚拟环境,并通过`pip`工具高效安装和管理python软件包。文章将详细阐述如何处理conda的`environment.yaml`文件,使其兼容`pip`安装流程,并提供完整的操作步骤、代码示例及重…

    2025年12月14日
    000
  • python中ruamel.yaml模块是什么?

    ruamel.yaml是Python中增强版YAML处理库,支持YAML 1.2标准,可保留文件原有格式和注释,适用于需频繁修改配置文件的场景。 ruamel.yaml 是 Python 中用于处理 YAML 文件的一个第三方库,它是 PyYAML 的一个增强版本,支持更多 YAML 1.2 标准的…

    2025年12月14日
    000
  • php中如何进行数组的降序或升序?

    sort()和rsort()按值排序并重置键;2. asort()和arsort()保持键值关联按值排序;3. ksort()和krsort()按键排序;4. usort()支持自定义排序逻辑。 在 PHP 中,对数组进行升序或降序排序有多种内置函数,根据是否需要保持键值关联、按值还是按键排序,可以…

    2025年12月14日
    000
  • 如何保证团队成员环境一致性

    通过版本控制管理配置文件、2. 使用Docker容器化部署、3. 借助自动化工具统一环境、4. 定期同步与文档更新,实现开发环境一致性,提升协作效率。 团队成员环境不一致,常常导致“在我机器上能跑”的问题,影响开发效率和协作质量。要解决这个问题,关键在于标准化和自动化。以下是几个实用方法,帮助团队保…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信