如果数组设置了,做什么?

发布于 2024-10-04 07:27:38 字数 312 浏览 9 评论 0原文

我发布多个复选框,并将它们放入一个数组中 - 例如:“tags[]”

发布它们时,我用逗号将它们内爆。

如果在表单上没有检查任何标签,然后发布,我会收到错误,因为脚本试图破坏不存在的东西。

我尝试过使用这样的东西:

if (isset($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  

检查它是否存在然后将其内爆的最佳方法是什么?

isset,array_key_存在吗?

I am posting multiple checkboxes, and putting them into an array - for example: "tags[]"

When posting them, I am imploding them with commas.

If NO tags are checked on the form, and then posted, I get errors as the script is trying to implode something that isn't there.

I have tried using something like this:

if (isset($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  

What is the best way to check if it exists, then implode it?

isset, array_key_exists?

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

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

发布评论

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

评论(7

作死小能手 2024-10-11 07:27:38

您可以在一行中完成此操作,在这种情况下 issetarray_key_exist 会给您相同的结果,但您可能需要检查 $_POST['tags '] 是一个数组...

$tags = isset($_POST['tags']) ? implode(", ", noescape($_POST['tags'])) : null;

或者

$tags = (isset($_POST['tags']) && is_array($_POST['tags'])) ? implode(", ", noescape($_POST['tags'])) : null;

您可以在这里测试:http://codepad.org/XoU4AdsJ

You could do it in one line, in this situation isset and array_key_exist would give you the same result but then you may want to check if $_POST['tags'] is an array...

$tags = isset($_POST['tags']) ? implode(", ", noescape($_POST['tags'])) : null;

or

$tags = (isset($_POST['tags']) && is_array($_POST['tags'])) ? implode(", ", noescape($_POST['tags'])) : null;

You can test here : http://codepad.org/XoU4AdsJ

香草可樂 2024-10-11 07:27:38

那应该有效:

if (isset($_POST['tags']) && is_array($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  

That should work:

if (isset($_POST['tags']) && is_array($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  
懒猫 2024-10-11 07:27:38
if(array_key_exists('tags',$_POST))
{
..................
}
if(array_key_exists('tags',$_POST))
{
..................
}
谁许谁一生繁华 2024-10-11 07:27:38
if (!empty($_POST['tags'])) {
   $tags = implode(", ", noescape($_POST['tags']));
}
if (!empty($_POST['tags'])) {
   $tags = implode(", ", noescape($_POST['tags']));
}
别低头,皇冠会掉 2024-10-11 07:27:38

我只会在内爆之前使用 is_array ,这样你的内爆只有在你内爆的情况下才有效var 是一个现有的数组。如果未设置则返回 0 :)

http://php.net/手册/en/function.is-array.php

I would just use is_array before imploding so your implode only works if your imploded var is an existing array. Returns 0 if it is not set as well :)

http://php.net/manual/en/function.is-array.php

对你再特殊 2024-10-11 07:27:38

实际上,更简单的方法是执行以下操作:

<input type="hidden" name="tags[]" value="none" />
<input type="checkbox" name="tags[]" value="Tag 1" />
<input type="checkbox" name="tags[]" value="Tag 2" />
<input type="checkbox" name="tags[]" value="Tag 3" />

然后删除默认值。

显然,如果某些恶意用户决定在没有任何数据的情况下向您的脚本发送帖子,这仍然会导致错误。

Actually, an easier way to do this would be to do something like this:

<input type="hidden" name="tags[]" value="none" />
<input type="checkbox" name="tags[]" value="Tag 1" />
<input type="checkbox" name="tags[]" value="Tag 2" />
<input type="checkbox" name="tags[]" value="Tag 3" />

And then remove the default value.

Obviously this would still cause errors if some malicious user decided to send a post to your script without any data at all.

逆光下的微笑 2024-10-11 07:27:38

我会使用 is_array() 和 count():

if (is_array($_POST['tags']) && count($_POST['tags'])>0){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  

I'd use is_array() and count():

if (is_array($_POST['tags']) && count($_POST['tags'])>0){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文