PHP isset() 与 !empty()

发布于 2024-12-14 14:55:49 字数 385 浏览 2 评论 0 原文

问题是,当我

$fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

在 PHP 端使用填充了 fname 字段的表单提交后,得到的输出正是我填写的内容,而在使用未填充的 fname 输入字段提交后,得到的输出绝对没有。 使用代码 !empty 代替,获取输出 sample

$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

在使用未填充的 fname 输入字段提交后,

The problem is when I use

$fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

in PHP side after form submission with filled fname field getting output exactly what I filled, after submission with unfilled fname input field, getting output ABSOLUTELY NOTHING. Used code !empty instead

$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);

after submission with unfilled fname input field, getting output sample.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

最丧也最甜 2024-12-21 14:55:49

isset() 只是检查变量是否为 NULL,如果您访问数组中未定义的索引,则不会抛出 E_NOTICE 错误(与 is_null( 不同) ))。

检查变量是否包含空字符串!

isset() just checks whether the variable is NULL or not and won't throw an E_NOTICE error if you accessed an undefined index in an array (unlike is_null()).

It does not check whether the variable is containing an empty string!

故事未完 2024-12-21 14:55:49

那是因为“fname”变量无论如何都会发送,它只是空的但已发送!

尝试将表单方法从 POST 更改为 GET,您就会自己看到。

That's because the 'fname' variable is sent anyway, it's just empty but sent!

Try changing your form method from POST to GET and you'll see by yourself.

吻泪 2024-12-21 14:55:49

这对我来说似乎完全是预料之中的。

您提交了一个包含名为 fname 的元素的表单,因此即使它为空,它仍然被设置。

意思是 isset 计算结果为 true,因此如果您不提交任何内容,则不会输出任何内容

This seems completely expected to me.

You submitted a form with an element called fname, so even though it was empty it was still set.

Meaning isset evaluates to true, hence you output nothing if you submit with nothing

攀登最高峰 2024-12-21 14:55:49

你的问题是什么?

在这种情况下,对 $_POST['key'] 使用 isset() 将返回 true,因为变量本身已经被设置并传递了从形式上看。由于您将 $_POST['fname'] 的值分配给 $fname 变量,因此该值将始终被分配,即使它为空也是如此。

如果没有对该变量进行赋值,empty() 将返回 false。

What is your question?

Using isset() on $_POST['key'] will return true in this circumstance, because the variable itself has been set and passed through from the form. Because you're assigning the value of $_POST['fname'] to the $fname variable, the value will always been assigned, even if it's empty.

empty() will return false if there is no assignment to that variable.

狼性发作 2024-12-21 14:55:49

这对我来说似乎是正确的。碰巧当输入字段发送为空时,$_POST 数组中的不是 NULL

$_POST['fname'] = "";
isset($_POST['fname']) == true;

$_POST['fname'] = "";
!empty($_POST['fname']) == false;

您可以做的是使用 array_key_exists 检查它是否在 $_POST 数组中而不是 isset 中:

$_POST['fname'] = "";
array_key_exists('fname', $_POST) == true; // independent of its value

It seems right to me. It happens that when input field is sent empty, it'll be empty in $_POST array, not NULL.

$_POST['fname'] = "";
isset($_POST['fname']) == true;

$_POST['fname'] = "";
!empty($_POST['fname']) == false;

What you could do is use array_key_exists to check it is in $_POST array instead of isset:

$_POST['fname'] = "";
array_key_exists('fname', $_POST) == true; // independent of its value
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文