我正在使用切换功能来更改页面上的变量,具体取决于URL中设置的变量(http://localhost/design/?state=AL)。
我一直收到以下错误:注意:未定义的变量:第84行的C:\ wamp \ www \ design \ includes \ strobeLaws.php中的topBeacon
这是我的PHP代码:
<?php
if(isset($_GET['state']))
{
$term = strtolower($_GET['state']);
switch($term)
{
case 'SL':
echo "<td>Please select a state.</td>";
break;
case 'AL':
$topBeacon = 'Amber';
$forwardBeacon = 'Amber';
$rearBeacon = 'Amber';
break;
}
}
?>
HTML部分包含变量应该回显的位置:
<tr>
<td>Top Beacon:</td>
<td><?php echo $topBeacon; ?></td> <!--Line 84 From Error -->
</tr>
我认为我做的一切都正确,但我不明白为什么在设置变量时出现错误。
答案 0 :(得分:0)
考虑$term
等于'SL'
时的案例代码路径,$topBeacon
未设置,从而导致未定义的错误。
如果您想解决错误,我建议您这样做,您可以添加逻辑来有条件地显示这些变量。
例如:
<tr>
<td>Top Beacon:</td>
<td><?php echo isset($topBeacon) ? $topBeacon : ''; ?></td>
</tr>
另一种选择是默认$topBeacon
(以及其他变量):
$topBeacon = '';
// default additional variables
$term = strtolower($_GET['state']);
switch($term)
{
// ...
答案 1 :(得分:0)
一遍又一遍地重写代码后,我发现了它。我开始用一个通用的例子来解决问题。我错过了一个重要的细节,所有回答的人也是如此,所以我发布这个作为未来参考的答案。
我说我的网址如下:http://localhost/design/?state=AL
我忘了这条线存在:$ term = strtolower($ _ GET ['state']);
我的一个案例的一个例子:
case 'AL':
$topBeacon = 'Amber';
$forwardBeacon = 'Amber';
$rearBeacon = 'Amber';
break;
我的开关案例功能正在等待URL以大写字母着陆,而$ term被转换为小写字母。
这是到目前为止完整更新的代码(工作,不包括所有50个州):
<?php
if(isset($_GET['state']))
{
$term = strtoupper($_GET['state']);
switch($term)
{
default:
$topBeacon = 'Select A State';
$forwardBeacon = 'Select A State';
$rearBeacon = 'Select A State';
case 'SL':
$topBeacon = 'Select A State';
$forwardBeacon = 'Select A State';
$rearBeacon = 'Select A State';
break;
case 'AL':
$topBeacon = 'Amber';
$forwardBeacon = 'Amber';
$rearBeacon = 'Amber';
break;
}
}
?>
<table style="width:400px" id="strobeLawsTable">
<tr>
<td>Top Beacon:</td>
<td><?php echo isset($topBeacon) ? $topBeacon : ''; ?></td>
</tr>
<tr>
<td>Forward Facing:</td>
<td><?php echo isset($forwardBeacon) ? $forwardBeacon : ''; ?></td>
</tr>
<tr>
<td>Rear Facing:</td>
<td><?php echo isset($rearBeacon) ? $rearBeacon : ''; ?></td>
</tr>
</table>