PHP从大小写切换中获取变量


PHP Get Variable From Case Switch

我使用切换函数根据URL中设置的变量更改页面上的变量(http://localhost/design/?state=AL)。

我一直收到一个错误:注意:未定义的变量:在C:''wamp''www''design''includes''strobeLaws.php的第84行中的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>

我认为我做的每件事都是正确的,但我不明白为什么在设置变量时会出现错误。

想想$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)
{
   // ...

在一次又一次地重写代码后,我发现了它。我从一个通用的例子开始。我错过了一个重要的细节,每个回答的人都错过了,所以我把这个作为一个答案发布,以供将来参考。

我说我的网址是这样的:http://localhost/design/?state=AL

我忘记了这一行的存在:$term=strtolower($_GET['state']);

还有我的一个例子:

         case 'AL':
            $topBeacon = 'Amber';
            $forwardBeacon = 'Amber';
            $rearBeacon = 'Amber';
            break;       

我的切换大小写功能正在等待URL以大写字母出现,而$术语正在变成小写字母。

这是到目前为止更新的完整代码(也就是说,不包括所有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>