如何使用PHP创建带有选项数组的SELECT元素?

时间:2014-04-09 20:55:30

标签: php html arrays

简单的问题,我确定一个简单的答案,我不能让它工作!!

我有一个函数将通过5个id之一传递(例如"第一个","第二个",",第三个","第四个"和"第五个")。

在这个函数中,我想引用一个名为id的数组,后跟_array(例如" first_array"," second_array"等等...)

如何使用字符串" _array"连接传递给函数的id名称? ?我知道如何在字符串中执行此操作,但在引用另一个变量时却不知道!

总结一下,我将:

$i_d = "first"       //passed to my function
$string = "_array"   

我希望链接到一个名为:

的数组
$first_array

修改

我的代码如下:

$option_timescale = array ( "1"=>"Immediately",
                            "2"=>"1 Month",
                            "3"=>"2 Months",
                            "4"=>"3 Months",
                            "5"=>"4 Months",
                            "6"=>"5 Months",
                            "7"=>"6 Months",
                            "8"=>"No Timescale"
                            );

$option_bus_route = array ( "1"=>"1 minute walk",
                            "2"=>"5 minute walk",
                            "3"=>"10 minute walk",
                            "4"=>"No Bus Needed"
                            );

$option_train_stat = array( "1"=>"5 minute walk",
                            "2"=>"10 minute walk",
                            "3"=>"5 minute drive",
                            "4"=>"10 minute drive",
                            "5"=>"No Train Needed"
                            );

function select_box($k,$v){ //$k is the id and $v is the description for the select boxes label


        $string = "option_";            //these two lines
        $option_array =$string . $k;    //are the troublemakers!

        $buffer = '<select name="' . $k . '" id="' . $k . '">';
        foreach ($option_array as $num=>$desc){
            $buffer .= '<option value="' . $num . '">' . $desc . '</option>';
        }//end foreach
        $buffer .= '</select>';
        $buffer .= '<label for="' . $k . '">' . $v . '</label>';

return $buffer;
}//end function

调用此函数的代码是:

function create_table($titles, $id) { //$titles is the relevant array from lists.php, $id is the id of the containing div

        $select = array('timescale','bus_route','train_stat');  //'select' id list
        $textarea = array('notes'); // 'textarea' id list   

        $buffer = '<div id="' . $id . '">';
        foreach ($titles as $k=>$v) { //$k is the database/id/name $v is the description text
            if (in_array($k,$select)){
                $buffer .= select_box($k,$v);
            }
            else if (in_array($k,$textarea)){
                $buffer .= text_box($k,$v);
            }
            else{
                $buffer .= check_box($k,$v);
            }
        }
        $buffer .= '</div>';
        echo $buffer;
    }

1 个答案:

答案 0 :(得分:0)

将$添加到eval字符串。

$i_d = "first";       
$string = "_array";
$myvar = $i_d . $string;
$$myvar = array('one','two','three');

print_r( $$myvar);