【问题标题】:How discard empty HTML form inputs from $_FILES array如何丢弃 $_FILES 数组中的空 HTML 表单输入
【发布时间】:2013-11-15 12:57:23
【问题描述】:

我有一个包含多个文件输入的 HTML 表单

<input type='file' id='images' name='images[]'>

我使用 implode() 将 $images 数组转换为逗号分隔的字符串并将其插入到我的 DB 中,然后在调用时我使用 explode() 来调用单个图像。

问题是:空输入字段仍然提交到数据库,所以当爆炸时,我得到空数组值

我怎样才能摆脱这些空数组值?甚至在使用 implode 函数之前?

我正在考虑运行一个 foreach 循环抛出 $_FILES['images'] 数组并从中丢弃空值并重建一个新数组..但是有没有更简单的方法可用?

谢谢

【问题讨论】:

  • 写下关于你的程序的更多细节。 [您的提交表格。并编写处理这些图像的 php 代码]

标签: php html mysql arrays


【解决方案1】:

使用 array_filter。它是一个函数,它使用指定为参数的另一个函数迭代数组。 但是如果你不传递这个参数,array_filter 将简单地去掉等于FALSE 的值。

$images = implode(',', array_filter($_FILES['images']));

【讨论】:

  • 不要忘记,如果您在没有回调函数的情况下使用 array_filter 也会删除 (int) 0,因此请考虑使用匿名函数之类的东西来确保其为空而不是 (int) 0(又名 ==假)
  • 正是我想要的:)
  • 也感谢您的评论,@mly0
【解决方案2】:

$images = array_filter($_POST['images']);

但我会重新考虑数据库设计。您可能不应该这样存储列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2015-08-06
    • 2015-12-17
    • 2015-09-16
    • 2017-08-12
    • 2012-03-18
    相关资源
    最近更新 更多