簡體   English   中英

如果在 echo 語句中阻塞?

[英]if block inside echo statement?

我懷疑這是不允許的,因為我收到“解析錯誤:語法錯誤,意外的 T_IF in...”錯誤。 但我找不到實現目標的方法。 這是我的代碼:

<?php 

  $countries = $myaddress->get_countries();

  foreach($countries as $value){
    echo '<option value="'.$value.'"'.if($value=='United States') echo 'selected="selected"';.'>'.$value.'</option>';
  }
  ?>

它的作用是在選擇元素中顯示國家/地區列表,並將美國設置為默認值。 我沒有工作可悲...

你會想要使用用作縮短的 IF/Else 語句的三元運算符:

echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>';

你總是可以使用( <condition> ? <value if true> : <value if false> )語法(它被稱為三元運算符-感謝 Mark 提醒我:) )。

如果<condition>為真,則該語句將被評估為<value if true> 如果不是,它將被評估為<value if false>

例如:

$fourteen = 14;
$twelve = 12;
echo "Fourteen is ".($fourteen > $twelve ? "more than" : "not more than")." twelve";

這與:

$fourteen = 14;
$twelve = 12;
if($fourteen > 12) {
  echo "Fourteen is more than twelve";
}else{
  echo "Fourteen is not more than twelve";
}

使用三元運算符

echo '<option value="'.$value.'"'.($value=='United States' ? 'selected="selected"' : '').'>'.$value.'</option>';

當您在使用它時,您可以使用printf使您的代碼更具可讀性/可管理性:

printf('<option value="%s" %s>%s</option>',
    $value,
    $value == 'United States' ? 'selected="selected"' : ''
    $value);

為了可讀性,它應該是這樣的

<?php 
  $countries = $myaddress->get_countries();
  foreach($countries as $value) {
    $selected ='';
    if($value=='United States') $selected ='selected="selected"'; 
    echo '<option value="'.$value.'"'.$selected.'>'.$value.'</option>';
  }
?>

想要把所有東西都塞進一行是一種死亡,伙計。 寫清楚。

但還有另一種方式,一種更好的方式。 根本不需要使用 echo。 學習使用模板。 先准備好數據,然后才顯示出來。

業務邏輯部分:

$countries = $myaddress->get_countries();
$selected_country = 1;    

模板部分:

<? foreach($countries as $row): ?>
<option value="<?=$row['id']?>"<? if ($row['id']==$current_country):> "selected"><? endif ?>
  <?=$row['name']?>
</option>
<? endforeach ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM