php开关函数出错


Error with php switch function

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

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; ?>

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

谢谢:)

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

应以endforeach;结束每个foreach:环。现在你有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');

显示所有警告和错误。当然,在生产环境中,您应该禁用错误报告

看起来您正在中断foreach循环,断开开关。你应该在开关的每一个盒子里结束每一个foreach。

查看PHP错误日志中的错误信息。当出现解析错误时,页面显示为空白,并且错误消息进入PHP错误日志。

在您的代码中,<?php endforeach; ?>似乎在开关之外。我想在switchbreak之前,每个foreach都应该有自己的endforeach

如果我错了请纠正我,但是您对三种场景中的每一种都做了完全相同的事情。我将修改我的代码如下:

<?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>

需要在每个break语句之前添加endforeach语句。加上这个,你的错误就解决了。希望有帮助