Php如果还有?符号

时间:2014-07-20 11:01:53

标签: php

我想验证国家/地区

<option<? $nationality == 'Albania' ? echo 'selected="selected"';?> value="Albania">Albania</option>

我想检查var $ nationality是否是阿尔巴尼亚

如果是,我希望echo html code selected =“selected”

我的代码有什么问题

我收到错误

Parse error: syntax error, unexpected T_ECHO

3 个答案:

答案 0 :(得分:4)

你应该在条件之前放回声。另外&#39;否则&#39;部分失踪了。这应该做:

<option<? echo ($nationality == 'Albania') ? ' selected="selected"' : ''; ?> value="Albania">Albania</option>

有关详细信息,请查看documentation

答案 1 :(得分:1)

我首先要说的是,在PHP中使用短标签不是推荐的,因为它与XML使用的标签相同。

<option<?php echo ($nationality == 'Albania' ? 'selected="selected"' : '');?> value="Albania">Albania</option>

我对此进行了更改,因此它将使用简写返回变量来回显该值。它不起作用的原因是因为速记需要:用于else语句。

此外,由于这似乎是一个国家/地区列表,您可以通过循环显示值来节省大量时间。

<?php
   $nationality = "Country1";
   $countries = array('Country1','Country2');
   echo '<select>';
   foreach($countries as $country) {
      echo '<option value="'.$country.'"'.($nationality == $country ? ' selected="selected"' : '').'>'.$country.'</option>';

      // This below line is just for formatting. It can be removed;
      echo "\n";
   }
   echo '</select>';
?>

代码输出

<select>
   <option value="Country1" selected="selected">Country1</option>
   <option value="Country2">Country2</option>
</select>

答案 2 :(得分:0)

您需要正确完成三元运算符并在其前添加echo。 这是你应该做的:

<option<? echo $nationality == 'Albania' ? echo 'selected="selected"' : '';?> value="Albania">Albania</option>