我的表格看起来像这样:
<form name="search" method="post" action="http://example.com/search3/">
Seach for: <input type="text" name="find[]" />
Search for stories by Type
<select name="find[]">
<option value="Fiction" selected>Fiction</option>
<option value="Non-Fiction">Non-Fiction</option>
<option value="Essay">Essay</option>
</select>
<input type="submit" name="search" value="Search" />
</form>
在php.search上,我通过以下方式获取数据:
$input = array(
"find" => $_POST['find'],
);
它几乎可以工作,除了它没有将结果放在find数组中。相反,数据将进入array2中的结果,可能是b / c我将每个字段命名为find []。这是var_dump:
array(1) {
["find"]=>
array(2) {
[0]=>
string(5) “testing1”
[1]=>
string(7) “testing2”
}
}
我不确定为什么在这种情况下我将查找数组留空。
如果我更改表单以便将find []名称作为数组变为find, 然后我得到数据进入名为find的数组,我想要,但是,只会捕获选择表单数据。请参阅var_dump了解结果以及我如何只得到一个结果而不是两个结果:
array(1) {
["find"]=>
string(7) “testing2”
}
问题是...... 如何获取输入并选择在find数组中捕获的数据?
答案 0 :(得分:0)
使用方括号[]
命名字段时,PHP会自动在$_POST
(或$_GET
)数组中创建嵌套数组。
在你的情况下,$ input ['find']的值是一个有两个数字键的数组。
echo $input['find'][0];
echo $input['find'][1];
您可以假设索引0保存在文本输入中输入的值,索引1保存在列表中选择的值。
如果您跳过字段名称中的squre括号,浏览器会将它们发送到服务器,如下所示:
find=value1&find=value2
PHP在解析数据时,首先将value1
存储在密钥find
下,但是当另一个find
密钥出现时,它会用新的value2
覆盖先前的值
答案 1 :(得分:0)
试试这个,这对你有帮助。
字段名称不应相同。
<form name="search" method="post">
Seach for: <input type="text" name="search" />
Search for stories by Type
<select name="find[]" multiple>
<option value="Fiction" selected>Fiction</option>
<option value="Non-Fiction">Non-Fiction</option>
<option value="Essay">Essay</option>
</select>
<input type="submit" name="submit" value="Search" />
</form>
<?php
if(isset($_POST['submit'])){
$input=array("find"=>$_POST['search'],'search'=>$_POST['find']);
print_r($input);
}
?>
答案 2 :(得分:0)
<form name="search" method="post" action="">
Seach for:
Search for stories by Type
<select name="find[]">
<option value="Fiction" selected>Fiction</option>
<option value="Non-Fiction">Non-Fiction</option>
<option value="Essay">Essay</option>
</select>
<input type="text" name="find[]" />
<input type="submit" name="search" value="Search" />
</form>
<?php if(isset($_POST)){
$input = array();
$var =array();
foreach ($_POST['find'] as $key => $value) {
if(!empty($value)) {
array_push($var, $value);
}
else{
continue;
}
}
$input = array(
"find" => $var,
);
print_r($input);
}