我在这里有这个代码,由于某种原因,它会接受前3个ifs为true或最后if。我似乎无法在不删除其中一个的情况下将其转到其中一个。
例如,输入来自TBN D664'或者'其他'它将在那里整理。但无论我投入什么输入,TAN D664'总是如此。
即使我重新排列它们,他们仍然会说无论陈述是什么,都是真的。我在我的程序中的其他地方使用了类似的代码并且工作正常,只有在这个地方才能给我带来麻烦。
if($Category == 'Petrochemical') {
if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) {
$i=37;
}
elseif (strpos($_SESSION['Petrochemical_app'],'TBN D2869') !== false) {
$i=37;
}
elseif (strpos($_SESSION['Petrochemical_app'],'TBN D4739') !== false) {
$i=37;
}
elseif ((strpos($_SESSION['Petrochemical_app'],'H2S') !== false) ||
(strpos($_SESSION['Petrochemical_app'],'Other') !== false)) {
if( (strpos($sample,'75to120') !==false) ||
(strpos($sample,'120to200') !==false) ||
(strpos($sample,'200ormore') !==false)){
$i=26;
}
if( (strpos($sample,'10to30') !== false) ||
(strpos($sample,'less10') !== false)){
$i=24;
}
if(strpos($sample,'30to75') !== false) {
$i=25;
}
}
}
如果有帮助,这是获得此特定选择的复选框。
<fieldset>
<b>Petrochemical</b><br />
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TAN D664" id="D664"> <label for="D664">TAN: D664</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D2869" id="D2869"> <label for="D2869">TBN: D2869</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D4739" id="D4739"> <label for="D4739">TBN: D4739</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="H2S and Mercaptan Bromine Number" id="H2S"> <label for="H2S">H2S and Mercaptan Bromine Number</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="Other" id="Other"> <label for="Other">Other: specify below</label>
<label for="Other5">Please Specify:</label> <input name="Other5" type="text" id="Other5">
</fieldset>
我在这里把它变成了一个会话
$_SESSION['Petrochemical_app']=$_POST['Petrochemical_app'];
当我做print_r();只要我使用复选框
进行不同的选择,我就会得到这个或它的变化Array ( [0] => TBN D4739 )
此外,如果我将所有这些都检查出来,我会得到这个
Array ( [0] => TAN D664 [1] => TBN D2869 [2] => TBN D4739 [3] => H2S and Mercaptan Bromine Number [4] => Other )
P.S。感谢您帮助代码格式的人!我是一个很长一段时间的stackoverflow爬行者,这是我的第一篇文章:P
答案 0 :(得分:0)
更新后,我认为错误非常明确。
if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) {
$i=37;
}
应该是
if (in_array('TAN D664', $_SESSION['Petrochemical_app'])) {
$i=37;
}
由于表单有几个具有相同名称的复选框,因此将值放入一个数组中,然后将其保存在会话中。您的代码在该数组上使用了字符串函数,这显然无法正常工作。您想检查数组中是否有特定值,因此应使用in_array([needle], [haystack])
来检查。