相关疑难解决方法(0)

如何将空数组从 HTML Form Post 提交到 PHP

我刚刚意识到 - 我不知道如何将一个空数组从 HTML 表单发布到 PHP。我可以发布大小为 1 或更大的数组,但是有什么方法可以发布一个空数组吗?我的意思是,你可以有:

<form>
  <input type='hidden' name='items[0]' value='Value Item 1' />
 <input type='hidden' name='items[1]' value='Value Item 2' />
</form>
Run Code Online (Sandbox Code Playgroud)

它给出了一个大小为 2: 的数组:$_POST['items'] === ["Value Item 1", "Value Item 2"]但是有没有办法将一个空数组作为 $_POST 键的值传递?也就是说,我知道我可以 make $POST['items'] === '',但是一个空数组 ( []) ?

具体用例是:我有一个一对多的形式,比如一个带有物品的购物车。该表单由数据库中的现有“项目”填充,但可以添加或删除项目,这些项目位于项目数组中。项目数组被索引 - 如果添加新项目,它们将保存到数据库中;如果项目被删除,它们将从数组中删除并从数据库中删除。

所有这些都可以正常工作 - 除非从表单中删除所有项目,在这种情况下不会传递“项目”键。

我发现了一个非常好的解决方法,即在表单顶部放置一个隐藏的输入“items”=null,因此即使没有项目也会传递键,然后在 PHP 中,如果“items”键是'' 我将它转换为一个空数组 - 所以一切正常。我只是在理论上很好奇是否可以发布一个空数组。不知道为什么这被认为是不合适的 - 希望解释有所帮助。

至于为什么我要检查密钥是否存在——我使用相同的通用代码来处理来自不同表单的输入——所以,如果用户在没有指定商品的情况下更改了购物车上的地址,则不应删除这些商品只是因为没有“项目”键。

为了进一步澄清,我实际上并不是在构建“购物车”——我正在构建一个抽象框架,该框架支持将一对多 POST 映射到 Eloquent 一对多关系。POST 中具有空值的任何字段都将从对象中删除 - 但不在 POST 中的任何字段/键不会在基础数据库中删除或修改。

重点是,我正在构建一个通用工具集 - 不仅仅是试图让一个函数来处理一种表单。

html php arrays post

4
推荐指数
1
解决办法
7544
查看次数

标签 统计

arrays ×1

html ×1

php ×1

post ×1