我有一个有三个下拉菜单的表单。在html中,选项被命名为0,1和2用于验证目的,实际的内联文本是不同的选项。
当我将值推送到.csv时,我写了一些if statements
来重命名已保存的变量,而不是仅仅按下数字。我已经有了它的工作,但是我不想让一堆if statements
徘徊,我想我会把它们放到一个函数中然后调用函数。但是,当我这样做时,用户选择的任何选项的值将恢复为在.csv文件中存储为0,1或2。
我的问题是我的功能缺失是什么导致它只选择编号值?
HTML:
<select id="semesterSelector" name="semesterSelector" onchange="checkPage5()">
<option value="0">Select</option>
<option value="1">Fall</option>
<option value="2">Spring</option>
</select>
PHP:
$semesterSelector = $_POST["semesterSelector"];
function semesterNameChange(){
if($semesterSelector == 1)
{
$semesterSelector = "Fall";
}
elseif($semesterSelector == 2)
{
$semesterSelector = "Spring";
}
}
semesterNameChange();
将值推送到Csv:
$csvData = [...] $semesterSelector [...]
答案 0 :(得分:1)
在PHP中,函数有自己的范围。这基本上意味着,如果你试图从函数外部访问变量,你需要传入它们(在括号之间),或者你需要使用global
来允许外部变量在您的函数范围内使用。在这种情况下,您只需在函数顶部添加global $semesterSelector
即可。
function semesterNameChange(){
global $semesterSelector;
if($semesterSelector == 1)
{
$semesterSelector = "Fall";
}
elseif($semesterSelector == 2)
{
$semesterSelector = "Spring";
}
}
semesterNameChange();
另一种方法是将值直接传递给函数:
function semesterNameChange($selectValue) {
if( $selectValue == 1 )
{
return "Fall";
}
elseif ( $selectValue == 2 )
{
return "Spring";
}
}
$semesterSelector = semesterNameChange($_POST["semesterSelector"]);
答案 1 :(得分:0)
你能确定你的<form>
标签有method =“POST”吗?另外用松散类型的语言说== 1会让你陷入困境。我们确定我们有一个整数并严格评估它:
$semesterSelector = (integer) $_POST["semesterSelector"];
function semesterNameChange(){
global $semesterSelector;
if ($semesterSelector === 1)