PHP使用switch语句

时间:2018-02-09 23:14:35

标签: php switch-statement

我在我的网站上设置了一个部分,根据调用的DIV ID切换内容,但如果变量不在网址中,则初始“值”会导致错误。

我得到的错误:Undefined index: item

项目是我的变量。

我的PHP是这样的:

<?php
    $url = 'file.php';
    $content = file_get_contents( $url );


    $item = $_GET[ 'item' ];
    switch ( $item ) {
        case "content1":
            $start = explode( '<div id="content1">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        case "content2":
            $start = explode( '<div id="content2">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        case "content3":
            $start = explode( '<div id="content3">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        default:
            $start = explode( '<div id="content1">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
    }?>

因此,如果我在我的网址末尾附加?item=content1代码,但是,在初次访问时(最后没有?item=),代码工作正常我得到了上述错误({{1} })

如果有人访问了index.php,我会怎么做?我不会收到错误,并抛出默认的被叫内容?

1 个答案:

答案 0 :(得分:1)

使用if statement检查变量是否已设置。如果没有,请将$item设置为默认值。

if (isset($_GET['item'])) {
    $item = $_GET['item'];
} else {
    $item = 'content1';
}

此外,似乎不需要switch/case语句,因为除了您作为explode分隔符使用的内容之外,每个案例都是相同的。

$delimiter = '<div id="' . $item . '">';
$start = explode($delimiter, $content);
$end = explode("</div>", $start[ 1 ] );
echo $end[0];

最好使用DOMDocumentDOMXPath代替字符串匹配来解析您的内容。

如果您想要真正想要的话,也可以使用shorthand if statement