php切换功能出错

时间:2014-07-14 11:27:28

标签: php switch-statement

我有以下代码,当我将代码粘贴到我的页面时,我得到一个白页,你们可以帮帮我吗?

PHP

<?php $strRendersettings = ($this->settings)? 'settings' : 'view'; ?><?php if (count($this->data)): ?>
    <ul>
        <?php
        switch($_SERVER['HTTP_HOST'])
        {
            case ("www.domain.de"):
            foreach ($this->data as $arrItem): ?>
                <li class="new_doc_home"><a href=""; ?>" ><strong><?php echo $arrItem['text']['new_docs_titel']; ?>:</strong><br>
                    <p><?php echo $arrItem['text']['new_docs_Text']; ?></p></a>
                </li>
        <?php
            break;

            case ("www.domain.com"):
                foreach ($this->data as $arrItem): ?>
                    <li class="new_doc_home"><a href=""; ?>" ><strong><?php echo $arrItem['text']['new_docs_titel']; ?>:</strong><br>
                        <p><?php echo $arrItem['text']['new_docs_Text']; ?></p></a>
                    </li>
        <?php
                    break;

            case ("www.domain.fr"):
                foreach ($this->data as $arrItem): ?>
                    <li class="new_doc_home"><a href=""; ?>" ><strong><?php echo $arrItem['text']['new_docs_titel']; ?>:</strong><br>
                            <p><?php echo $arrItem['text']['new_docs_Text']; ?></p></a>
                    </li>
         <?php
            break;
                }
            ?>
            <?php endforeach; ?>
            </ul>

<?php else: ?>

<?php endif; ?>

我需要代码,因为有一些不同的顶级域名。

谢谢:)

5 个答案:

答案 0 :(得分:0)

看起来你在断开开关时打破了foreach循环。你应该在开关的每个外壳内结束foreach。

答案 1 :(得分:0)

问题是,你永远不会结束你的循环。

您应该使用foreach:结束每个endforeach;循环。现在你有3个循环,只有一个结束endforeach;

例如,此代码可以正常运行:

<?php
$array = [1=>2, 3=> 4];

$array2 = [5=>6,7=>8];

foreach ($array as $k => $v):

    foreach ($array2 as $i => $j):
         echo $i.' '.$j."<br />";

    endforeach;
endforeach;

而以下情况不是:

<?php

$array = [1=>2, 3=> 4];

$array2 = [5=>6,7=>8];

foreach ($array as $k => $v):

    foreach ($array2 as $i => $j):
         echo $i.' '.$j."<br />";

    //endforeach;
endforeach;

我建议您在PHP文件的开头添加:

<?php

error_reporting(E_ALL);
ini_set('display_errors','1');

显示所有警告和错误。当然,在制作时你应该禁用错误报告

答案 2 :(得分:0)

请参阅PHP错误日志以获取错误消息。当出现解析错误时,页面显示为空白,错误消息将显示在PHP错误日志中。

在您的代码中,<?php endforeach; ?>似乎位于交换机之外。我想每个foreach应该在endforeach switch之前拥有自己的break

答案 3 :(得分:0)

如果我错了,请纠正我,但是对于三种情况中的每种情况,你都在做同样的事情。我会改变我的代码:

<?php $strRendersettings = ($this->settings)? 'settings' : 'view'; ?>
<?php if (count($this->data)): ?>
    <ul>
    <?php
    switch($_SERVER['HTTP_HOST'])
    {
        case "www.domain.de":
        case "www.domain.com":
        case "www.domain.fr":
            foreach ($this->data as $arrItem): ?>
                <li class="new_doc_home">
                    <a href="">
                        <strong>
                            <?php echo $arrItem['text']['new_docs_titel']; ?>:
                        </strong><br>
                        <p>
                            <?php echo $arrItem['text']['new_docs_Text']; ?>
                        </p>
                     </a>
                </li>        
            <?php 
            endforeach; 
            break; 
    }?>

    </ul>

答案 4 :(得分:0)

您需要在每个endforeach语句之前添加break语句。添加它,你的错误将得到解决。 希望这有帮助:)