在switch语句中回显

时间:2013-11-12 10:57:06

标签: php xml

如何实现以下功能,我希望在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或'}'中   第154行/home/teamwork/public_html/clients/ciw/datatest/index.php

当将echo更改为case时,它会消除错误,但不会输出任何内容。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你有一些奇怪的事情发生。

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

之前移动它

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

第三 - 你似乎将你的外观中的“$ field”视为一个数组(你引用$ field ['name'])和一个类(你引用$ field-&gt; value)。我怀疑一旦修复回声问题,你将会遇到更多问题。试图建立一个测试用例来证明解决方案让我头疼,因为这可能只是因为我不知道xmlObject中的内容!

答案 2 :(得分: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;
    }
}
?>

有关详细信息,请参阅official documentation