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

0

あなたはそこで奇妙なことが起こっています。

まず、「スイッチ」と最初の「ケース」の間に 2 つのエコーがあります。これは意味がありません。常に出力したい場合は、「スイッチ」の前に移動します

第二に、「ブレーク」の後と次の「ケース」の前にエコーがあります。このコードには到達できません。テストケースをまとめないと断定はできませんが、構文チェックにも失敗する可能性があります。

第三に、外観内の「$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 に答える