gpt4 book ai didi

PHP:当名称没有数组时检索复选框的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:23 26 4
gpt4 key购买 nike

我无法控制的表单是将数据发布到我的 PHP 脚本。该表单包含沿着这些行的复选框:

<input type="checkbox" value="val1" name="option"/>
<input type="checkbox" value="val2" name="option"/>

如果我要为表单编写代码,我会写 name="option[]" 而不是 name="option"。但这不是我能做的改变。现在,如果选中两个复选框,$_POST["option"] 仅返回其中一个值。我怎样才能在 PHP 中检索所有选定的值?

最佳答案

您可以阅读原始发布数据。例如:

<fieldset>
<legend>Data</legend>
<?php
$data = file_get_contents("php://input");
echo $data."<br />";
?>
</fieldset>

<fieldset>
<legend>Form</legend>
<form method="post" action="formtest.php">
<input type="checkbox" value="val1" name="option"/><br />
<input type="checkbox" value="val2" name="option"/><br />
<input type="submit" />
</form>
</fieldset>

选中这两个框,输出将是:

option=val1&option=val2

这是一个 live demo .然后您所要做的就是自己将字符串解析为合适的格式。这是一个执行类似操作的函数示例:

function parse($data)
{
$pairs = explode("&", $data);

// process all key/value pairs and count which keys
// appear multiple times
$keys = array();
foreach ($pairs as $pair) {
list($k,$v) = explode("=", $pair);
if (array_key_exists($k, $keys)) {
$keys[$k]++;
} else {
$keys[$k] = 1;
}
}

$output = array();
foreach ($pairs as $pair) {
list($k,$v) = explode("=", $pair);
// if there are more than a single value for this
// key we initialize a subarray and add all the values
if ($keys[$k] > 1) {
if (!array_key_exists($k, $output)) {
$output[$k] = array($v);
} else {
$output[$k][] = $v;
}
}
// otherwise we just add them directly to the array
else {
$output[$k] = $v;
}
}

return $output;
}

$data = "foo=bar&option=val1&option=val2";

print_r(parse($data));

输出:

Array
(
[foo] => bar
[option] => Array
(
[0] => val1
[1] => val2
)

)

但在某些情况下,此功能可能无法按预期工作,所以要小心。

关于PHP:当名称没有数组时检索复选框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com