非常确定我的标题需要修复,但无论如何,我有这个循环。背景信息,我有36个输入“类型”需要插入1. 1如果值有东西..设置为变量,如果没有设置为NULL。
我的问题是,我是否可以执行此循环而不列出其中的36项。
使用php版本5.2.17
if (!empty($_POST['type1'])){
$type1 = $_POST['type1'];
}
else
$type1 = NULL;
if (!empty($_POST['type2'])){
$type2 = $_POST['type2'];
}
else
$type2 = NULL;
if (!empty($_POST['type3'])){
$type3 = $_POST['type3'];
}
else
$type3 = NULL; // to 36...
的PHP / HTML
<?php
for ($i = 1; $i < 37; $i++){
echo "Type$i:<input name='type$i' type='text' size='20' maxlength='35' /><br />";
}
?>
编辑:我不想使用数组。
答案 0 :(得分:1)
要实际定义所有这些变量$type1, $type2 etc
,请使用"variable variables":
for ($i = 1; $i < 37; $i++) {
$varname = "type$i";
if (! empty($_POST[$varname])) {
$$varname = $_POST[$varname];
}
else {
$$varname = NULL;
}
}
其他人建议使用数组(原则上我同意),但这是对这个问题的实际答案。
答案 1 :(得分:1)
问题已更新为不使用数组。对于那些寻找可以使用数组的答案的人来说,请保留在这里。
您可以将$_POST
数组添加到预定义的数组值中,将结果存储在另一个数组中。例如:
<?php
$defaults = array(
"type1" => NULL,
"type2" => NULL,
"type3" => NULL,
"type4" => NULL
// etc
);
$_POST = array(
"type1" => 1,
"type2" => "foo"
);
$types = $_POST + $defaults;
print_r($types);
结果是数组:
Array
(
[type1] => 1
[type2] => foo
[type3] =>
[type4] =>
...
)
然后为你的html循环:
for ($i = 1; $i < 37; $i++){
echo "Type$i:<input name='" . $types["type" . $i] . "' type='text' size='20' maxlength='35' /><br />\n";
}
请务必注意,这与使用empty
的支票略有不同。
答案 2 :(得分:0)
在php和表单输入上使用数组。
$type = array();
for ($i = 1; $i <= 36; $i++) {
if (isset($_POST['type'][$i])){
$type[$i] = $_POST['type'][$i];
}
}
<强> HTML / PHP 强>
<?php
for ($i = 1; $i <= 36; $i++){
echo "Type$i:<input name='type[$i]' type='text' size='20' maxlength='35' /><br />";
}
?>
答案 3 :(得分:0)
只是一个名为$ post的数组的示例。
$post = array(
'type1' => 'one',
'name' => 'test',
'type3' => 'three'
);
$matches = preg_grep ('^type[0-9]^', array_keys($post));
foreach ($matches as $val) {
$$val = $post[$val];
}
var_export($type1);
答案 4 :(得分:0)
使用数组
$i = 0;
$myinputs = 36;
while($i<$myinputs){
$i++;
if(empty($_POST['type'.$i.''])){
$type[$i] = $_POST['type'.$i.''];
}else{
$type[$i] = null;
}
}
print_r($type);