0

如何实现以下目标,我希望在 switch 语句中回显硬编码数据:

<?php foreach ($xmlObject->fields[0]->field as $field) {
    switch((string) $field['name']) {
        echo "<td>" . $c . "</td>";
        echo "<td>1</td>";
        case 'published':
             echo "<td>" . $field->value . "</td>";
             echo "<td>" . $field->value . "</td>";                          
             break;     
        case 'body':
            echo "<td>" . htmlentities($field->value) . "</td>";
            break;                           
        case 'title':
            echo "<td>" . $field->value . "</td>";
            break;                           
        case 'summary':
            echo "<td>" . $field->value . "</td>";
            break;                           
        echo "<td>publish</td>";
        echo "<td>closed</td>";                     
        echo "<td>closed</td>";
        echo "<td>&nbsp;</td>";
        case 'title':
            echo "<td>" . $field->value . "</td>";
            break;                                              
        echo "<td>&nbsp;</td>";
        echo "<td>&nbsp;</td>";                     
        case 'published':
             echo "<td>" . $field->value . "</td>";
             echo "<td>" . $field->value . "</td>";                          
             break;
        echo "<td>&nbsp;</td>";
        echo "<td>0</td>";                      
        echo "<td>http://www.domain.com/clients/ciw/?p=" . $c . "</td>";
        echo "<td>0</td>";
        echo "<td>policies</td>";
        echo "<td>&nbsp;</td>";
        echo "<td>0</td>";

        //case 'parentId':
        //    echo "<td>" . $field->value . "</td>";
        //    break;

        //case 'SubjectArea':
        //     echo "<td>" . $field->value . "</td>";
        //   break;                          
    }
} ?>

我收到以下错误:

解析错误:语法错误,意外的 T_ECHO,在第 154 行的 /home/teamwork/public_html/clients/ciw/datatest/index.php 中需要 T_CASE 或 T_DEFAULT 或 '}'

将回显更改为大小写时,它会消除错误但不输出任何内容。

4

3 回答 3

1

在 switch 语句中不能有没有大小写的回显,看看下面的代码变量 $error 将给出输出

switch(true)
{
    case (strlen($foo) > 30):
        $error = "The value provided is too long.";
    $valid = false;
    break;

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
        $error = "The value must be alphanumeric.";
    $valid = false;
    break;

    default:
    $valid = true;
    break;
}
于 2013-11-12T11:15:51.487 回答
0

你那里发生了一些奇怪的事情。

首先 - 你的“开关”和你的第一个“案例”之间有两个回声。这没有意义。如果您希望始终输出它,请将其移到“swtich”之前

其次 - 你在“break”之后和下一个“case”之前有回声。此代码将无法访问。如果没有将测试用例放在一起,我不能肯定地说,但它也可能无法通过语法检查。

第三 - 您似乎将外观中的“$field”视为一个数组(您引用 $field['name'])和一个类(您引用 $field->value)。我怀疑一旦您解决了回声问题,您将遇到更多问题。试图构建一个测试用例来证明解决方案让我很头疼,尽管这可能只是因为我不知道 xmlObject 中有什么!

于 2013-11-12T11:03:08.897 回答
0

只需对您的开关盒进行少量修改:试试这个并检查它是否有帮助:

<?php
echo "<td>" . $c . "</td>";
echo "<td>1</td>";
foreach ($xmlObject->fields[0]->field as $field) {
    switch((string) $field['name']) {
    case 'published':
         echo "<td>" . $field->value . "</td>";
         echo "<td>" . $field->value . "</td>";                          
         break;     
    case 'body':
        echo "<td>" . htmlentities($field->value) . "</td>";
        break;                           
    case 'title':
        echo "<td>" . $field->value . "</td>";
        break;                           
    case 'summary':
        echo "<td>" . $field->value . "</td>";

        echo "<td>publish</td>";
        echo "<td>closed</td>";                     
        echo "<td>closed</td>";
        echo "<td>&nbsp;</td>";
        break;
    case 'title':
        echo "<td>" . $field->value . "</td>";
        echo "<td>&nbsp;</td>";
        echo "<td>&nbsp;</td>";                     
        break;
    case 'published':
         echo "<td>" . $field->value . "</td>";
         echo "<td>" . $field->value . "</td>";                          
         break;
    default:     //default case will be executed if none of the above case is satisfied
        echo "<td>&nbsp;</td>";
        echo "<td>0</td>";                      
        echo "<td>http://www.domain.com/clients/ciw/?p=" . $c . "</td>";
        echo "<td>0</td>";
        echo "<td>policies</td>";
        echo "<td>&nbsp;</td>";
        echo "<td>0</td>";
        break;
    }
}
?>

更多细节请参考官方文档

于 2013-11-12T11:09:17.053 回答