2011-05-23 34 views
21
<? switch ($var): ?> 
    <? case 1: ?> 
    It's 1! 
    <? break ?> 
<? endswitch ?> 

Tôi muốn làm điều gì đó tương tự, nói cách khác sử dụng câu lệnh chuyển trong các mẫu PHP. Điều này là có thể với câu lệnh if. Đoạn mã trên tạo ra Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT trong PHP 5.3. Các PHP docs cho thấy rằng điều này nên có thể.Chuyển đổi câu lệnh trong PHP được tiêm HTML

Ai đó có thể xác nhận rằng điều này không hiệu quả, hay đúng hơn, hãy cho tôi biết tôi đang làm gì sai?

Cảm ơn.

+1

Bạn nên sử dụng ' Spudley

+1

Bạn thấy điều này trong tài liệu ở đâu? Tôi đã đi đến liên kết bạn cung cấp, nhưng tôi không thể tìm thấy bất cứ điều gì về hỗ trợ trộn HTML nội tuyến với một tuyên bố chuyển đổi. –

+1

Trả lời

43

Tôi đọc trong tài liệu php rằng ví dụ của bạn sẽ không hoạt động.

Bất kỳ đầu ra nào (bao gồm khoảng trắng) giữa tuyên bố chuyển đổi và trường hợp đầu tiên sẽ dẫn đến lỗi cú pháp. Ví dụ, đây là không hợp lệ

Hãy thử điều này thay vì:

<div> 
<?php switch($variable): 
case 1: ?> 
    <div> 
    Newspage 
    </div> 
<?php break; ?> 
<?php case 2: ?> 
    </div> 
    Forum 
    <div> 
<?php break; ?> 
<?php endswitch; ?> 
</div> 

http://php.net/control-structures.alternative-syntax

+3

Cảm ơn! (đối với những người khác, mã là từ [bình luận này] (http://se2.php.net/manual/en/control-structures.alternative-syntax.php#80668)) – Znarkus

14

Bạn có

?>\n\n<? 

sau khi chuyển đổi của bạn mà trở nên

switch($var): 
echo "\n\t"; 
case 1: 

Hãy suy nghĩ về kịch bản của bạn như PHP với HTML trong đó, chứ không phải là HTML được chỉnh sửa. PHP nhị phân nhận được tập tin đầu tiên.

Bạn có thể muốn sử dụng một cái gì đó như HEREDOC để phản hồi HTML không thoát.

+0

Ah giải thích nó :) cảm ơn! – Znarkus

2

Tôi đề nghị định dạng dễ dàng này, thử nghiệm và làm việc:

<? switch($var) : case 1 : ?> 

    <div>One</div> 

<? break; case 2 : ?> 

    <div>Two</div> 

<? break; case 3 : ?> 

    <div>Three</div> 

<? break; endswitch; ?> 
Các vấn đề liên quan