php循环与变量简化

时间:2014-01-15 23:47:50

标签: php

非常确定我的标题需要修复,但无论如何,我有这个循环。背景信息,我有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 />";
    }
 ?>

编辑:我不想使用数组。

5 个答案:

答案 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);