【发布时间】:2015-09-21 12:19:18
【问题描述】:
如何替换从帖子提交的仅数组元素?
我有一个带有多个复选框的表单,我将所有内容提交到一个 PHP 页面,我想在其中替换另一个数组。
表格:
$oldArray = array(
"colors" => array(1 => "mandarin", "strawberry", "blueberry", "kiwi", "banana"),
"other" => array(1 => "test1", "test2", "test3", "test4")
);
目标页面:
$newArray = array(
"colors" => array(1 => "orange", "red", "blue", "green", "yellow"),
"other" => array(1 => "example1", "example2", "example3", "example4")
);
print_r( array_replace($_POST['colors'], $newArray['colors']) );
如果我只检查两个元素,“mandarin”和“kiwi”,array_replace 返回:
Array (
[1] => orange <--- OK
[2] => strawberry
[3] => blueberry
[4] => green <--- OK
[5] => banana
)
我怎样才能echo 只有$_POST 元素?
例如
Array (
[1] => orange
[4] => green
)
【问题讨论】:
-
array_replace 关闭数组键。如果没有看到您的表单,您可能会收到
$_POST['colors'][0]['orange']和$_POST['colors'][1]['green'],这意味着您的密钥不匹配。 -
@MarcB
orange和green是值,而不是键。至少根据上面发布的信息。 -
是的,但除非 OP 将表单设置为具有
colors[5]或其他任何字段名称,否则 $_POST 中的数组键不会对应于他的数组中的任何键。 -
@MarcB 我的表单结构是:
<form action="example.php" method="post" enctype="multipart/form-data"> <?php $oldArray = array( "colors" => array(1 => "mandarin", "strawberry", "blueberry", "kiwi", "banana"), "other" => array(1 => "test1", "test2", "test3", "test4") ); ?> <?php foreach($oldArray['colors'] as $color): ?> <input type="checkbox" name="colors[]" value="<?php echo $color ?>" > <?php echo $color ?> <?php endforeach; ?> <input type="submit" value="Submit"> </form> -
与其在您的问题中编辑解决方案,不如将其作为答案发布,如果它为当前问题添加了任何新内容。考虑接受最适合您的答案之一。
标签: php arrays forms post form-submit