2012-10-03 95 views
0

由於IF,下面的代碼給出了語法錯誤。我怎樣才能解決這個問題,而不刪除IF語句?PHP If循環中的語句

<?php 
    for ($i = 1; $i < 6; $i++){ 
     $data .= 'h'.$i.'{'.  
      if (!empty ($size)) {. 
      'font-size: ' .$size. ';'. 
      }. 
     '}'; 
    } 
?> 

錯誤:

Parse error: syntax error, unexpected 'if' (T_IF) 

回答

3

不能使用if聲明在一個表達式中,因爲它是syntac根本不對,語句本身不返回值。使用三元?:運營商可以有嵌套:

$data .= 'h' . $i . '{' . (!empty($size) ? "font-size: $size" : '') . '}'; 

你也可以從雙引號的使用中受益插值而不是得到凌亂與.運營商的變量。

1
for ($i = 1; $i < 6; $i++) { 
    $data .= "h$i{" . (!empty($size) ? "font-size: $size;" : "") . "}"; 
} 
1

不能在字符串連接使用if,但你可以使用簡碼:

for ($i = 1; $i < 6; $i++){ 
     $data .= 'h'.$i.'{'.(!empty($size) ? ('font-size: ' .$size. ';') : '').'}'; 
} 
1
for ($i = 1; $i < 6; $i++){ 
    $data .= 'h'.$i.'{'.((!empty ($size))?'font-size: {$size}':'').'}'; 
} 

說明:

下面的結構被稱爲 「三元如果」:

$x = ($test == "Y")?"Yes!":"No!"; 

並且是一樣的:

if ($test == "Y"){ 
    $x="Yes!"; 
} else { 
    $x="No!"; 
} 
+0

注意評論你的代碼? – Yaroslav

+1

@Yaroslav:我修正了錯字。謝謝。現在它實際上工作。我會在我的回答中發表評論。 –

+0

不客氣。現在你有一個符合SO需求的答案 – Yaroslav

1

,不能串聯全如果是內嵌的,將會被吹掉,所以下列任何一種都應該解決這個問題:

for ($i = 1; $i < 6; $i++) 
{//ternary 
    $data .= 'h'.$i.'{'.(!empty ($size) ? 'font-size: ' .$size. ';' : '').'}'; 
} 

這是一樣的文字:

for ($i = 1; $i < 6; $i++) 
{ 
    $data .= 'h'.$i.'{'; 
    if (!empty ($size)) 
    { 
     $data .= 'font-size: ' .$size. ';'; 
    } 
    $data .= '}'; 
} 

嗯,是100%準確,三元運算符concats ''如果$size是空的。三元語法如下:[evaluate statement] ? [if true] : [else]。因此,該代碼的真正全面的等效是:

for ($i = 1; $i < 6; $i++) 
{ 
    $data .= 'h'.$i.'{'; 
    if (!empty ($size)) 
    { 
     $data .= 'font-size: ' .$size. ';'; 
    } 
    else 
    { 
     $data .= ''; 
    } 
    $data .= '}'; 
} 
+1

'}'應該在外面if語句 –

+0

@Glavić:很好的發現,編輯和修復 –

+0

你的'else'語句沒有意義。 –

1

我想應該是沒有錯誤:

<?php 
    for ($i = 1; $i < 6; $i++){ 
     $data .= 'h'.$i.'{' ; 
      if (!empty ($size)) { 
      $data .= 'font-size: ' .$size. ';'; 
      } 
     $data .='}'; 
    } 


?> 
1

你是在線路中添加東西的字符串開始的中間$data

兩個解決方案:

1)停止添加的東西,開始你如果添加更多的東西里面,如果停止,然後在新語句添加其餘部分。

$data .= 'h'.$i.'{'; 

if (!empty ($size)) {. 
    $data .= 'font-size: ' .$size. ';'. 
}. 

$data .= '}'; 
  1. 使用三元運算。

$data .= 'h'.$i.'{' (!empty($size) ? 'font-size: ' .$size. ';' : ''). '}';

三元運算符的計算結果的第一個參數爲真或假,並返回的第二或第三個參數,就像一個函數調用。

請注意:使用三元運算符太多會使您的代碼無法讀取,特別是在彼此內部使用時。爲了更好的可讀性,您可以隨時將其替換爲獨立的IF結構。此外,三元運算符不能輕易擴展,除了返回兩個值之一外,還需要做更多的工作。