原来 isset($_POST) 永远是真值,!empty($_POST)才可以判断,坑人啊

2022-10-28 16:44:56 +08:00
 qinrui

isset 判断 POST 没啥意义啊,但网上好多代码都是这么写的

2712 次点击
所在节点    PHP
25 条回复
mrpzx001
2022-10-28 16:47:31 +08:00
这不是常识?
yuzo555
2022-10-28 16:48:09 +08:00
正常不是该用 $_SERVER['REQUEST_METHOD'] 判断?
fairless
2022-10-28 16:54:07 +08:00
一般判断某个字段是否存在采用 issset($_POST['xxxx']),而且现在大部分都是从框架 request 对象获取表单了
qqjt
2022-10-28 16:55:59 +08:00
上框架吧,laravel 走起,少去踩老坑了,没意义
frank553000
2022-10-28 16:58:55 +08:00
请问用框架做的各位,
假如做一般的企业网站(有产品,产品筛选等,或者以后加支付等)这类功能的。
后台功能都要自己写吗?还是拿开源的改一下?
fiypig
2022-10-28 17:01:21 +08:00
我还是习惯!empty()解决一切烦恼
00ing
2022-10-28 17:07:15 +08:00
php 基础有待提高
minbaby
2022-10-28 17:17:56 +08:00
如果不在 fpm 里执行 php 代码, $_POST 就不一定存在
yuanchao
2022-10-28 17:25:00 +08:00
isset 和 empty 是两回事呀
liaohongxing
2022-10-28 17:38:43 +08:00
$_POST 超级变量永远是一个 array, 表单有值自动填充到这个 array ,没值是一个空 array , 空 array 满足 isset 的情况。
hahasong
2022-10-28 17:49:58 +08:00
上手 PHP 要求这么低吗 这种问题文档里难道没有
liaohongxing
2022-10-28 17:56:04 +08:00
@hahasong
文档有说明 :

https://www.php.net/manual/zh/function.isset.php
判断一个变量是否已设置, 即变量已被声明,且其值不为 null 。

https://www.php.net/manual/zh/function.empty
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 false ,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

就楼主太菜。
qinrui
2022-10-28 19:33:22 +08:00
@liaohongxing 即使不往页面 post 数据,isset ($_post [])仍然是真
totoro52
2022-10-28 19:42:54 +08:00
这哪里是坑,是你没去文档和好好了解 PHP 的底层,很多程序都是直接取$_POST ,那如果没有默认定义为 array ,那到时得一堆报错,坑更多
wonderfulcxm
2022-10-28 19:47:10 +08:00
…我竟无言以对,明明是你基础有问题
iwh718
2022-10-28 19:56:19 +08:00
这就离谱。。。这正常吧。
xinshoushanglu
2022-10-28 20:19:23 +08:00
你是第一天用 php 吗?
liaohongxing
2022-10-28 20:45:41 +08:00
@qinrui

isset 在其他语言就是判断内存有无分配。 空 array 就是内存已分配,但是分配了一个空的 hashmap, 里面没数据而已。
isset 判断一个空 array 就是 true 。而$_POST 就是一个特殊的空 array , 永远已分配 。判断这个肯定总是 true
jfcherng
2022-10-28 20:52:59 +08:00
mht
2022-10-28 21:40:51 +08:00
我也不认为这个是坑。。。isset 表面意思就是这个变量是否设置了,empty 是判断变量是不是 PHP 的意义上的空。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/890759

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX