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

Php 如果设置了数组,请做些什么?,php,arrays,isset,Php,Arrays,Isset,我张贴了多个复选框,并将它们放入一个数组中,例如:“tags[]” 在发布它们时,我用逗号将它们内爆 如果表单上没有检查标记,然后发布,我会在脚本试图内爆不存在的内容时出错 我尝试过使用类似的方法: if (isset($_POST['tags'])){ $tags = implode(", ", noescape($_POST['tags'])); } <input type="hidden" name="tags[]" value="none" /> <i

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

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

如果表单上没有检查标记,然后发布,我会在脚本试图内爆不存在的内容时出错

我尝试过使用类似的方法:

if (isset($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  
<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" />
检查它是否存在然后使其内爆的最佳方法是什么

isset,数组\u键\u存在?

应该可以工作:

if (!empty($_POST['tags'])) {
   $tags = implode(", ", noescape($_POST['tags']));
}
if (isset($_POST['tags']) && is_array($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  
我只会在内爆之前使用,所以只有当内爆变量是现有数组时,内爆才有效。如果未设置,则返回0:)

我会使用is_array()和count()


您可以在一行中完成,在这种情况下,
isset
array\u key\u exist
将给出相同的结果,但是您可能需要检查
$\u POST['tags']
是否是一个数组

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


您可以在这里进行测试:

实际上,更简单的方法是这样做:

if (isset($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
}  
<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" />

然后删除默认值


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

如果有一天
$\u post['tags']
恰好是一个字符串,这将崩溃,导致
计数(字符串)
将返回
1
,如您所见:您是对的。我刚刚更正了我的答案,加入了一个is_数组()。
<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" />