开关语句中的回显


Echo within a switch statement

如何实现以下目标,我希望在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、预期T_CASE或 T_DEFAULT或"}" /home/teamwork/public_html/clients/ciw/datatest/index.php 在第 154 行

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

switch 语句中不能有没有大小写的 echo,请查看下面的代码变量$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;
}

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

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

有关更多详细信息,请参阅官方文档

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

首先 - 您的"开关"和第一个"案例"之间有两个回声。 这说不通。 如果您希望始终输出它,请将其移动到"SWTICH"之前

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

第三 - 您

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