我知道有一些类似的问题,但没有一个能解决我的问题。
我有一个简单的表格:
<form method="post">
Import data: <textarea type="text" name="import"></textarea>
<input type="submit">
</form>
然后我从“import”字段获取数据:
$current = my_data();
$import = $_POST['import'];
$merge = array_merge($current,$import);
问题是,即使我粘贴:
array('foo' => 'bar')
我明白了:
警告:array_merge():参数#2不是数组 (地址) 在线(线)
我无法更改HTML标记,我必须在那里粘贴数组。任何想法如何解决它?我一直在阅读有关serialize()但不确定是否有任何序列化的数据是array()不是PHP的数组()。这是为什么?有解决方案吗非常感谢!
更新
$ current为我的主题保留一系列选项。 $ merge应该保存具有不同值的相同键(大约30-50个,不是多维但可能在将来),但当然用户可能会添加新的,所以为了忽略它我实际上使用:
$imported_options = array_merge($current_options , array_intersect_key($_POST["import"], $current_options ));
(简化了这个,因为它只是一个例子)
所以我毕竟想从表单加载一个数组并用它更新另一个数组。
答案 0 :(得分:0)
你可以做到
$current['import'] = $import;
或者你可以这样改变你的HTML:
<textarea type="text" name="myarray['import']"></textarea>
在php中:
$import = $_POST['myarray'];
答案 1 :(得分:0)
PHP不会在$ _GET / $ _ POST中创建数组,除非你告诉它:
Import data: <textarea type="text" name="import[]"></textarea>
^^---- need these
如果没有[]
,PHP会将任何重复的字段名称视为要覆盖的字符串。使用名称中的[]
,PHP会将它们视为数组中的新元素。
答案 2 :(得分:0)
第二个参数不是数组。
$_POST['import'] = value received from the form.
说完了,试试:
$current [] = $_POST['import'];
答案 3 :(得分:0)
你想从$ _POST ['import']获得什么?
你使用textarea来获取数组吗?如果它只是一个变量,那么使用array_push
http://php.net/manual/es/function.array-push.php
对于array_merge,你需要有2个数组。