0

我知道有一些类似的问题,但没有一个能解决我的问题。

我有一个简单的表格:

<form method="post">
   Import data: <textarea type="text" name="import"></textarea>
   <input type="submit">
</form>

然后我从“导入”字段中获取数据:

$current = my_data();
$import = $_POST['import'];
$merge = array_merge($current,$import);

问题是,即使我粘贴:

array('foo' => 'bar')

我得到:

警告:array_merge():参数 #2 不是行 (line) 上 (address) 中的数组

我无法更改 HTML 标记,我必须在那里粘贴数组。任何想法如何解决它?我一直在阅读有关 serialize() 的内容,但不确定是否有任何要序列化的内容是 array() 不是 PHP 的 array()。这是为什么?有什么解决办法吗?非常感谢!

更新

$current 为我的主题保存了一系列选项。$merge 应该保存具有不同值的相同键(其中大约 30-50 个,不是多维的,但将来可能会出现),但当然用户可能会添加新的,所以为了忽略它们,我实际上正在使用:

$imported_options = array_merge($current_options , array_intersect_key($_POST["import"], $current_options ));

(简化了这个,因为它只是一个例子)

所以毕竟我想从表单中加载一个数组并用它更新另一个数组。

4

4 回答 4

0

The second argument is not an array.

$_POST['import'] = value received from the form.

With that said, try:

$current [] = $_POST['import'];
于 2013-10-30T18:31:00.470 回答
0

你可以做

$current['import'] = $import;

或者您可以通过以下方式更改您的 html:

<textarea type="text" name="myarray['import']"></textarea>

在 php 中:

$import = $_POST['myarray'];
于 2013-10-30T18:28:03.717 回答
0

PHP 不会在 $_GET/$_POST 中创建数组,除非你告诉它:

Import data: <textarea type="text" name="import[]"></textarea>
                                               ^^---- need these

如果没有[],PHP 会将任何重复的字段名称视为要覆盖的字符串。在[]名称中,PHP 会将它们视为数组中的新元素。

于 2013-10-30T18:29:05.470 回答
0

你想从 $_POST['import'] 得到什么?

您正在使用 textarea 来获取数组?

如果它只是一个变量,那么使用 array_push

http://php.net/manual/es/function.array-push.php

对于 array_merge 你需要有 2 个数组。

于 2013-10-30T19:31:34.140 回答